列表(2021-9-18)
求十个学生的平均分
scores = [80, 69, 97, 96, 86, 69, 60, 74, 66, 92]
result = sum(scores) / len(scores)
print(result)
1、什么是列表(list)
1)列表是python自带的容器型数据类型:将[]作为容器的标志,里面多个元素用,隔开[元素1, 元素2, …] – 一个容器可以同时保存多个数据
2)列表是可变的(支持增删改);列表是有序的(支持下标操作)
3)列表的元素的要求:
a、任何类型的数据都可以作为列表的元素
b、同一个列表中的不同元素类型可以不一样
4)空列表
list1 = []
print(list1, type(list1))
5)列表中的元素
list2 = [12, 'eff', 12.5, True]
print(list2)
a = 100
list3 = [a + 2, a == 20]
print(list3) # [102, False]
list4 = [10, 'adf', a * 2, [a, 10]]
print(list4)
练习1:定义一个列表保存5个人的年龄
list1 = [18, 28, 42, 23, 43]
print(list1)
练习2:定义一个列表保存一个人的姓名、年龄、性别和电话
list2 = ['姓名', 16, '性别', '电话']
print(list2)
2、获取元素
1)获取单个元素
语法:
列表[下标] - 获取列表中指定下标对应的元素
说明:
列表 - 可以是保存列表的变量也可以是具体一个列表数据
[] - 固定写法
下标 - 下标又叫索引,它是元素在列表中的位置信息
python中有序序列中元素的下标有两种:
a、元素从左往右从0开始依次增加的下标值
b、元素从右往左从-1开始依次减小的下标值
‘’’
heroes = [‘诸葛亮’, ‘瑶’, ‘奥巴马’, ‘亚索’, ‘劫’, ‘赵云’, ‘孙膑’]
print(heroes[3])
print(heroes[1], heroes[4], sep=’ ,’)
注意:下标不能越界
(重)2)获取多个元素 - 列表切片
‘’’
1、语法1:
列表[开始下标:结束下标:步长]
从开始下标开始取,取到结束下标前为止,每次下标增加指定步长。
注意:
a、如果从开始到结束的方向和步长对应的方向不一致,那么切片的结果是[]。(步长为正表示从前往后,负则从后往前)
b、在不为[]的时候,开始下标对应的值能取到,结束下标对应的值娶不到:[开始下标,结束下标]
‘’’
print(heroes[1:4:1]) # [‘瑶’, ‘奥巴马’, ‘亚索’]
print(heroes[1:4:-1]) #
print(heroes[-1:4:1]) #
print(heroes[-1:2:-2]) # [‘孙膑’, ‘劫’]
print(heroes[0:3:1]) # [‘诸葛亮’, ‘瑶’, ‘奥巴马’]
print(heroes[-1:4:2]) #
print(heroes[-5:5:1]) # [‘奥巴马’, ‘亚索’, ‘劫’]
print(heroes[1:-2:2]) # [‘瑶’, ‘亚索’]
print(heroes[-2:2:-1]) # [‘赵云’, ‘劫’, ‘亚索’]
练习:
heroes = ['诸葛亮', '瑶', '奥巴马', '亚索', '劫', '赵云', '孙膑']
1) ['诸葛亮', '亚索']
print(heroes[0:4:3])
2) ['孙膑', '劫', '奥巴马']
print(heroes[-1:-6:-2])
3) ['奥巴马', '亚索', '劫', '赵云']
print(heroes[2:6])
2、切片语法的省略操作
a、省略步长 - 步长就是1
列表[开始下标:结束下标] == [开始下标:结束下标:1]
b、省略开始下标 - 如果步长为正表示从第0个元素开始往后取;如果步长为负从最后一个开始往前取
列表[:结束下标:步长]
列表[:结束下标]
c、省略结束下标 - 如果步长为正从开始下标取到最后一个元素为止;如果步长为负从开始下标取到最前面一个元素为止
列表[开始下标::步长]
列表[开始下标:]
heroes = ['诸葛亮', '瑶', '奥巴马', '亚索', '劫', '赵云', '孙膑']
print(heroes[1:4]) # ['瑶', '奥巴马', '亚索']
print(heroes[-1:1]) # []
print(heroes[:3]) # ['诸葛亮', '瑶', '奥巴马']
print(heroes[:3:-2]) # ['孙膑', '劫']
print(heroes[:-1:-1]) # []
print(heroes[2:]) # ['奥巴马', '亚索', '劫', '赵云', '孙膑']
print(heroes[-2::-2]) # ['赵云', '亚索', '瑶']
print(heroes[::2]) # ['诸葛亮', '奥巴马', '劫', '孙膑']
print(heroes[:]) # ['诸葛亮', '瑶', '奥巴马', '亚索', '劫', '赵云', '孙膑']
print(heroes[::-1]) # ['孙膑', '赵云', '劫', '亚索', '奥巴马', '瑶', '诸葛亮']
3)遍历列表
方法一(直接获取元素):
for 变量 in 列表:
循环体
方法二(通过下标获取元素):
for 变量 in range(len(列表)):
列表[变量]
补充:len(列表) - 获取指定列表中元素的个数
scores = [100, 90, 83, 92, 56, 78, 99, 66, 67, 95, 78]
sum1 = 0
for a in scores:
if a >= 90:
sum1 += 1
print('个数:', sum1)
print('-------------------------------分割线-------------------------------------')
for a in range(len(scores)):
print(a, scores[a])
注意:首先要拿到列表的下标,再取下标对应的值
3、列表的增删改
1)增 - 添加元素
1、列表.append(元素) - 在列表的最后添加指定元素
2、列表.insert(下标, 元素) - 在指定下标对应的元素前插入指定元素
films = ['绿皮书', '意愿清单', '你的名字', '复仇者联盟']
print(films) # ['绿皮书', '意愿清单', '你的名字', '复仇者联盟']
films.append('肖申克的救赎')
print(films) # ['绿皮书', '意愿清单', '你的名字', '复仇者联盟', '肖申克的救赎']
films.insert(2, '泰坦尼克号')
print(films) # ['绿皮书', '意愿清单', '泰坦尼克号', '你的名字', '复仇者联盟', '肖申克的救赎']
2)删 - 删除元素
1、del列表[下标] - 删除列表中指定下标对应的元素
2、列表.remove(元素) - 删除列表中指定元素(如果元素不存在会报错;如果元素有多个,只会保留最后一个)
3、列表.pop() - 取出列表中最后一个元素
列表.pop(下标) - 取出列表中指定下标对应的元素
films = ['绿皮书', '意愿清单', '泰坦尼克号', '你的名字', '复仇者联盟', '肖申克的救赎']
del films[2]
print(films) # ['绿皮书', '意愿清单', '你的名字', '复仇者联盟', '肖申克的救赎']
films.remove('肖申克的救赎')
print(films) # ['绿皮书', '意愿清单', '你的名字', '复仇者联盟']
films = ['绿皮书', '意愿清单', '泰坦尼克号', '你的名字', '复仇者联盟', '肖申克的救赎']
del_film = films.pop()
print(films) # ['绿皮书', '意愿清单', '泰坦尼克号', '你的名字', '复仇者联盟']
print(del_film) # 肖申克的救赎
del_film = films.pop(1)
print(films) # ['绿皮书', '泰坦尼克号', '你的名字', '复仇者联盟']
print(del_film) # 意愿清单
3)改
列表[下标] = 值
films = ['绿皮书', '意愿清单', '泰坦尼克号', '你的名字', '复仇者联盟', '肖申克的救赎']
films[0] = 'V字仇杀队'
print(films) # ['V字仇杀队', '意愿清单', '泰坦尼克号', '你的名字', '复仇者联盟', '肖申克的救赎']
films[4] = '杀手不太冷'
print(films) # ['V字仇杀队', '意愿清单', '泰坦尼克号', '你的名字', '杀手不太冷', '肖申克的救赎']