列表数据类型及列表元素的增删改

一、数据类型-列表

1、列表是由python提供的一种容器型数据类型;以[]作为容器的标志,里面多个元素用逗号隔开。

[元素1,元素2,元素3]
列表是可变的(元素的个数,元素的值,元素的顺序可变)、-说明元素支持增删改
有序的-说明支持下标操作

列表元素:
列表中的元素可以是任何类型的数据;同一个列表中的元素的类型可以不一样,如下:

list = [12,12.8,True,"abc",[1,2],(10,100),{1,2},{"name":100}]
list1 = [1, 2, 3, 4, 50]
print(list1)

输出结果为:

[1, 2, 3, 4, 50]

2、查询获取列表中的元素

a、查询单个元素:

语法:列表[]下标 获取列表中指定下标对应的元素
说明:列表 - 列表值,保存列表的变量,结果是列表的表达式
[] - 固定写法
下标 - 列表中的每个元素都会对应一个下标,表示这个元素在列表中的位置
下标范围是:
1、0~长度减一(列表长度) 从前往后一次增加
2、-1~ -列表长度 -1表示最后一个 -1表示倒数第二个(从后往前一次递减)
下标不能越界,否则会报错

print([1, 2, 3, 4][-1])  # 输出结果为:4
b、获取部分元素(切片)

1、获取部分元素
列表[开始下标:结束下标:步长]-从开始下标开始获取 下标值每次增加步长去获取下一个元素 到结束下标前为止。
列表[M:N:step] 获取range(m,n,step)产生的数字序列下标对应的所有元素
注意:列表切片的结果还是列表,新列表中的元素是原列表元素的一部分
说明:步长为正说明从前往后取,那么开始下标所在位置必须在结束下标所在位置的前面,否则结果是空,取不到元素。
如果步长为负,是从后往前取,那么开始下标所在的位置必须在结束下标所在的位置的后面,否则取不到元素。
切片的时候 下标可以越界

list2 = ['路飞', '娜美', '山治', '索罗', '乌索普', '乔巴']
print(list2)  # ['路飞', '娜美', '山治', '索罗', '乌索普', '乔巴']
print(list2[1:4:1])  # ['娜美', '山治', '索罗']
print(list2[5:0:-1])  # ['乔巴', '乌索普', '索罗', '山治', '娜美']
print(list2[0:5:2])  # ['路飞', '山治', '乌索普']
print(list2[5:2:1])  # 空
print(list2[-1:3:1])  # 空

2、切片
省略下标和步长
a 、 列表 [开始下标:结束下标] - 相当于步长是1
b 、 列表[:结束下标:步长] / 列表[:结束下标]
省略开始下标:步长为正从第一个开始取,步长为负表示从最后一个往前取
c 、 列表[开始下标::步长] / 列表[开始下标:]
省略结束下标:取到最后一个 从该方向取到最后一个元素为止
d 、 列表[::步长] / 列表 [:]

ls = [1, 2, 3, 4, 5, 6, 7]   
print(ls[1:3])
print(ls[:5:1])
print(ls[:6])
print(ls[:])
print(ls[0::1])
print(ls[3:])
#依次对应结果:
# [2, 3]
# [1, 2, 3, 4, 5]
# [1, 2, 3, 4, 5, 6]
# [1, 2, 3, 4, 5, 6, 7]
# [1, 2, 3, 4, 5, 6, 7]
# [4, 5, 6, 7]

遍历列表:
将列表中的元素一个个的取出来
a.直接遍历获取元素
for 变量 in 列表:
b.用遍历下标来遍历
len(列表)
for 变量 in range(len()):
print(列表[变量])

二、元素的增、删、改

1、元素的增-------增加元素

1、列表.append(元素) -在指定的列表的末尾添加指定的元素
2、列表.insert(位置,数据) - 在列表中指定的下标前添加指定的元素

films = ['一人之下', '一拳超人', '不良人', '死亡笔记']
films.append('秦时明月')
print(films) # ['一人之下', '一拳超人', '不良人', '死亡笔记', '秦时明月']
films.insert(1, '柯南')
print(films) # ['一人之下', '柯南', '一拳超人', '不良人', '死亡笔记', '秦时明月']

2、元素的删------删除元素

1、 del 列表[下标] - 删除指定下标对应的元素

films = ['一人之下', '一拳超人', '不良人', '死亡笔记']
del films[2]  # 下标不能越界,越界报错
print(films)    # ['一人之下', '一拳超人','死亡笔记']

2、列表.remove(元素) - 删除列表中指定的元素
注意::如果元素在列表中不存在则会报错!
如果要删除的元素在列表里面有多个,只删第一个元素。

nums = [10, 2, 45, 2, 9]
nums.remove(2)
print(nums)   # [10, 45, 2, 9]

3、元素的改 - 修改元素

列表[下标] =值 - 将列表中指定下标对应的元素修改成指定的值
将score中所有小于60的值的分数换成不及格:

scores = [89, 45, 56, 20, 90, 78, 60, 23, 87, 20, 50]
length = len(scores)
for i in range(length):
    if scores[i] < 60:
        scores[i] = '不及格'
print(scores) #[89, '不及格', '不及格', '不及格', 90, 78, 60, '不及格', 87, '不及格', '不及格']

作业:

1.已知一个数字列表,求列表中心元素。

lis = [10,21,30,20,51,54,50,20,10]
Id = int(len(lis)/2)
if len(lis) % 2 ==0:
    print("最中间的数是:",lis[Id-1],lis[Id])
else:
    print("最中间的数是:",lis[int(len(lis)/2)])
# 最中间的数是: 51

2.已知一个数字列表,求所有元素和。

lis = [10,21,30,20,51,54,50,20,10]
Sum = 0
for i in lis:
    Sum+=i
print(Sum)   # 266

3.已知一个数字列表,输出所有奇数下标元素。

lis = [10,21,30,20,51,54,50,20,10]
for i in range(len(lis)):
    if i & 1 == 1:
        print(lis[i])

4.已知一个数字列表,输出所有元素中,值为奇数的元素。

lis = [10,21,30,20,51,54,50,20,10]
for i in range(len(lis)):
    if lis[i] & 1 == 1:
        print(lis[i])

5.已知一个数字列表,将所有元素乘二。

lis = [10,21,30,20,51,54,50,20,10]
for i in range(len(lis)):
    lis[i]=lis[i]*2
print(lis)

6.有一个长度是10的列表,数组内有10个人名,要求去掉重复的
例如:names = ['张三', '李四', '大黄', '张三'] -> names = ['张三', '李四', '大黄']

names = ['张三', '李四', '大黄', '张三','王五','李四','啊猫','啊狗','老大','老二']
names_new = []
for values in names:
    if values not in names_new:
        names_new.append(values)
names = names_new
print(names)

7.已经一个数字列表(数字大小在0~6535之间), 将列表转换成数字对应的字符列表

list1 = [97, 98, 99,95,9,5,8,4,2,6,4,8]
for i in range(len(list1)):
    list1[i]=chr(list1[i])
print(list1)

8.用一个列表来保存一个节目的所有分数,求平均分数(去掉一个最高分,去掉一个最低分,求最后得分)

scores = [90,50,20,80,60,70,89,48,56,90]
scores.remove(max(scores))
scores.remove(min(scores))
print(scores)
Sum = 0
for i in range(len(scores)):
    Sum+=scores[i]
average = Sum / len(scores)
print(average)

9..有两个列表A和B,使用列表C来获取两个列表中公共的元素

A = [1, 'a', 4, 90,100,'i','m']  
B = ['a', 8, 'j', 1,4,8,'i']
c = []
for value in A:
    if value in B:
        c.append(value)
print(c)

10.有一个数字列表,获取这个列表中的最大值.(注意: 不能使用max函数)

num = [98,56,2,64,64,6,4,9941,61,6,6,4]
Temp = [0]
for v in num:
    if v > Temp[0]:
        Temp[0]=v
print(Temp)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 列表的基础语法 1.什么是列表(list) 1)列表 列表是python提供的容器型数据类型;以中括号作为容器的标...
    KIKIu阅读 3,945评论 0 1
  • 1.什么是列表(list) 1.什么是列表(list)列表是容器型数据类型(序列),将[]作为容器的标志,多个元素...
    Ed97001阅读 1,280评论 0 0
  • 一、列表基础 1. 什么是列表 列表是容器型的数据类型(序列),将[]作为容器的标志,多个元素用 , 隔开特点:可...
    LI3e0阅读 1,189评论 0 0
  • 01 - 列表基础 1.什么是列表(list) 列表是容器型数据类型(序列), 将[]作为容器的标志,多个元素用逗...
    Tianxiaoyu阅读 3,388评论 0 0
  • 列表 1.什么是列表(list) 列表是容器型数据类型(序列),将[ ]作为容器的标志,多个元素用逗号隔开。-> ...
    举颗凤梨阅读 3,034评论 0 2