day总结-5列表
一、认识列表
- 什么是列表
列表是容器型数据类型,将[]作为容器标志,里面多个元素用逗号隔开:
[‘元素1’,‘元素2’,‘元素3’,‘元素4’,…]
list1 = [] # 空列表
list2 = [10, 10, 20, '张三']
list3 = [10,12.5,'abc',True,[1,2],(10,20)]
list 是可变的(元素的个数,位置,值可变);列表是有序的(元素有固定位置信息----下标)
元素:任何Python支持的类型的数据都可以作为列表,同一个列表的元素的类型可以不同,赋值语句不能作为列表的元素。
二、获取元素
- 查 ------ 获取元素 获取单个元素
heroes = ['鲁班七号', '后裔', '虞姬', '孙尚香']
print(heroes[1])
print(heroes[0])
print(heroes[-2])
print(heroes[-1])
语法: 列表[下标] —获取列表中指定下标对应的元素
什么是下标:下标又叫索引,代表元素在序列中的位置信息。
下标值范围有两种:
- 元素从左往右对应的下标是从0开始依次增加的
- 元素从右往左对应的下标是从-1开始依次减少。
-
遍历
-
for 变量 in 列表:
循环体
for x in heroes: print(x)
-
- 例题:定义一个列表保存一个班所有的学生分数,求所有学生的总分,统计不及格学生的分数。
scores = [45, 67, 89, 90, 77, 23, 50]
sum = 0
count = 0
for x in scores:
sum += x
if x >= 60:
print('及格分数:', x)
else:
count += 1
print('不及格分数:', x)
print('总分:', sum)
print('不及格个数:', count)
2. 通过下标遍历元素
len (列表) ------ 获取列表长度(获取列表元素的个数)
for 变量 in range(len(列表)):
循环体
list1 = [10, 20, 'abc']
print(len(list1))
scores = [45, 67, 89, 90, 77, 23, 50]
for index in range(len(scores)):
print(index, scores[index])
- 例题:打印位置在偶数位上的所有元素
for index in range(0, len(scores), 2):
print(index, scores[index])
- 获取部分元素(列表切片)
列表[开始下标
步长为正:从开始下标到结束下标左闭右开,从前往后取,每次下标增长步数
heroes = ['鲁班七号', '后裔', '虞姬', '马可波罗', '孙尚香']
print(heroes[1:4:1]) # 后裔 虞姬 马可波罗
print(heroes[1:4:2]) # 后裔 虞姬
print(heroes[0:-1:1]) # ['鲁班七号', '后裔', '虞姬', '马可波罗']
print(heroes[1:4:2]) # []
步长为负:从开始下标到结束下标的左闭右开,从后往前取,每次减少步长
print(heroes[-1:0:-2]) # ['孙尚香', '马可波罗']
1. 省略步长
列表[开始下标:结束下标] ------[开始下标:结束下标:1 ]
heroes = ['鲁班七号', '后裔', '虞姬', '马可波罗', '孙尚香', '狄仁杰', '百里守约']
print(heroes[1:4])
print(heroes[-5:-2]) # ['马克波罗'’虞姬‘’孙尚香‘]
print(heroes[0:-3]) # ['鲁班七号''后裔'’马克波罗‘’虞姬‘]
print(heroes[-1:2]) # []
2.省略开始下标
列表[:结束下标 :步长]
列表[:结束下标]
如果步长为正:开始下标就从第一个元素开始往后取;
如果步长为负:开始下标就从最后一饿元素开始往前取
heroes = ['鲁班七号', '后裔', '虞姬', '马可波罗', '孙尚香', '狄仁杰', '百里守约']
print(heroes[:3]) #['鲁班七号', '后裔', '虞姬']
print(heroes[:3:-1]) #百里守约,狄仁杰,孙尚香
print(heroes[:-3:1]) # [鲁班七号,后裔,马克波罗,虞姬]
print(heroes[:-5:-2]) # [百里守约,孙尚香]
print(heroes[:4:3]) # [鲁班七号,虞姬]
3.省略结束下标
列表[ 开始下标::步长 ]
列表[ 开始下标:]
步长为正:结束下标省略,从开始下标开始从前往后取到最后一个元素为止,
步长为负:结束下标省略,从开始下标开始从后往前取到最前一个元素为止,
print(heroes[2::2]) # [马克波罗,孙尚香,百里守约]
print(heroes[-3::-1]) # [孙尚香,虞姬,马克波罗,后裔,鲁班七号]
三、增、删、改
一、增 ----- 往列表中增加元素
- 列表 . append (元素) ----- 在指定列表的最后追加一个指定的元素
movies = ['看不见客人', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
print(movies)
movies.append('触不可及')
print(movies)
- 列表 . insert (下标 , 元素) ------- 列表指定下标前面插入指定元素
movies = ['看不见客人', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
movies.insert(1, '星际穿越')
print(movies) # ['看不见客人', '星际穿越', '肖生克的救赎', '唐人街探案', '小森林', '忠犬八公']
movies.insert(0, '忍者神龟')
print(movies)
- 例题:输入一个学生的成绩,将输入的成绩插入到列表中,并且插入成绩后不影响排序。
for index in range(len(scores)):
if scores[index] <= num:
scores.insert(index, num)
break
else:
scores.append(num)
print(scores)
二、 删 ----- 删除列表中某个元素
- 语法: del 列表 [ 下标 ] — 删除列表中指定下标对应的元素(下标不能越界)
TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年']
del TVs[2]
print(TVs)
- 列表 . remove(元素) ---- 删除列表中指定的元素,如果指定元素有相同的多个,只删除最前面的一个。
TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年'] #如果指定元素不存在,会报错
TVs.remove('甄嬛传')
print(TVs)
-
列表 . pop(下标) — 取出列表中指定下标对应的元素
列表.pop( ) – 取出列表中最后一个元素
TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年', '白夜追凶']
del_item = TVs.pop() # 取出的元素没有消失,可以继续使用
print(TVs, del_item)
三、改和 in 操作
-
改 – 修改元素的值
语法:列表[下标] = 值 – 将列表中指定下标对应的元素修改指定的值
subject = ['高数', '大物', 'C语言', '毛概']
bject[0] = '英语'
print(subject)
- 例题:已知列表scores,将列表中的低于60的成绩全部修改成60分
scores = [89, 9, 78, 23, 76, 99, 56, 66]
for index in range(len(scores)):
if scores[index] < 60:
scores[index] = 60
print(scores)
-
in 和 not in
元素 in 列表 – 判断列表中是否存在指定元素
元素 not in 列表 – 判断列表中是否不存在指定元素
TVs = ['琅琊榜', '破产姐妹', '甄嬛传', '庆余年', '白夜追凶'] print('甄嬛传'in TVs) # True nums = [1, 2, 3, 4] print(1 in nums) # True print([1, 2] in nums) # False