1.什么是列表
'''
列表是容器型数据类型,将[]作为容器标志,里面多个元素用逗号隔开;[元素1,元素2,元素3,...]
列表是可变的(可变指元素的个数,值,顺序);列表是有序的(元素有固定的位置--下标)
列表元素:任何python支持的类型的数据都可以作为列表,同一个列表的元素的类型可以不同
赋值语句不能作为列表元素
'''
2.获取元素
# 2.1 获取单个元素
'''
语法:列表[下标]
什么是下标:下标又叫索引,代表元素在序列中的位置信息。
下标值的范围有两种:
a、元素从左往右对应的下标从0开始一次增加
b、元素从右往左对应的下标是从-1开始一次减少
'''
heroes = ["鲁班七号" ,"后裔" ,"马可波罗" ,"虞姬","孙尚香"]
print(heroes[1]) # 后裔
print(heroes[-4]) # 后裔
print(heroes[2]) # 马可波罗
print(heroes[-3]) # 马可波罗
# 2.2 遍历(把元素一个一个取出来)
'''
方法一:直接获取元素
for 变量 in 列表:
循环体
方法二:通过下标遍历个数
len(列表) - 获取列表长度(获取列表元素的个数)
for 变量 in range(len(列表)):
循环体
'''
# 练习1:定义一个列表保存一个班所有学生的分数
# 1.求所有学生的总分
# 2.统计不及格学生的人数
scores = [45, 67, 89,90, 77, 23,50]
sum = 0
num = 0
for figure in scores: #法二:for index in range(len(scores)):
sum += figure sum += scores[index]
if figure < 60: if scores[index] < 60:
num += 1 num += 1
print(sum)
print(num)
# 练习2:打印位置(下标)在偶数位上的所有元素
for index in range(0,len(scores),2):
print(index, scores[index])
# 2.3 获取部分元素(列表切片) - 返回一个小列表
"""
列表[开始下标:结束下标:步长]
步长为正:[开始下标, 结束下标) , 从前往后,每次下标增加步长 !!!!!!注意结束下标取不到
步长为负:[开始下标, 结束下标),从后往前,每次下标增加步长
"""
# 练习1:
heroes = ["鲁班七号" ,"后裔" ,"马可波罗" ,"虞姬","孙尚香"]
print(heroes[0:-1:1]) # ['鲁班七号', '后裔', '马可波罗', '虞姬']
print(heroes[1:4:-1]) # []
print(heroes[-1:0:-2]) # ['孙尚香', '马可波罗'] !!!!!!注意结束下标取不到
# 1) 省略步长
# 列表[开始下标:结束下标] == 列表[开始下标:结束下标:1]
heroes = ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香', '狄仁杰', '百里守约']
print(heroes[-5:-2]) #['马可波罗', '虞姬', '孙尚香']
print(heroes[-1:2]) #[]
# 2) 省略开始下标
# 列表[:结束下标:步长]
# 列表[:结束下标]
# 如果步长为正:开始下标省,就从第一个元素开始往后取
# 如果步长为负:开始下标省,就从最后一个元素开始往前取
heroes = ["鲁班7号","后裔" ,"马可波罗", "虞姬","孙尚香","狄仁杰","百里守约"]
print(heroes[:4:3]) # "鲁班7号", "虞姬"
print(heroes[:-5:-2]) #"百里守约","孙尚香"
# 3) 省略结束下标
# 列表[开始下标::步长]
# 列表[开始下标:]
# 步长为正:结束下标省略,从开始下标开始从前往后取到最后一个元素为止。
# 步长为负:结束下标省略,从开始下标开始从后往前取,取到第一个元素为止。
heroes = ["鲁班7号","后裔" ,"马可波罗", "虞姬","孙尚香","狄仁杰","百里守约"]
print(heroes[-3::-1]) # "孙尚香", "虞姬","马可波罗","后裔","鲁班7号"
# 4) 一起省
heroes = ["鲁班7号","后裔" ,"马可波罗", "虞姬","孙尚香","狄仁杰","百里守约"]
print(heroes[::2]) # ['鲁班7号', '马可波罗', '孙尚香', '百里守约']
print(heroes[:]) # ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香', '狄仁杰', '百里守约']
print(heroes[::-1]) # ['百里守约', '狄仁杰', '孙尚香', '虞姬', '马可波罗', '后裔', '鲁班7号']
3.增删
# 1.增 - 往列表中添加元素
# 1)列表.append(元素) - 在指定列表的最后追加一个指定的元素
# 2)列表.insert(下标,元素) - 在列表指定下标前插入指定元素 !!!!!!!!!
movies = ['看不见的客人','肖生客的救赎']
movies.insert(1,'星际穿越') # ['看不见的客人', '星际穿越', '肖生客的救赎']
写法二:movies.insert(-1,'星际穿越')
# 2.删 - 删除列表中某个元素
# 1) 语法:del 列表[] - 删除列表中指定下标对应的元素(下标不能越界)
# a.删除指定变量
# b.删除列表中指定元素
nums = [10,1,2 ,32]
del nums[-1]
print(nums) # [10, 1, 2]
# c.删除整个列表
del nums
# print(nums) #用print会报错,因为已经删除了列表就不能在使用
# 2) 列表.remove(元素) - 删除列表中指定元素(如果删除元素有多个,删除第一个;如果指定元素不存在,会报错)
TVs = ['琅琊榜','破产姐妹','甄嬛传','庆余年']
TVs.remove("庆余年")
print(TVs) # ['琅琊榜', '破产姐妹', '甄嬛传']
# 3)
# 列表.pop() - 取出列表中最后一个元素
# 列表.pop(下标) - 取出列表中指定下标对应的元素,并且返回
练习:
TVs = ['琅琊榜','破产姐妹','甄嬛传','庆余年','甄嬛传','甄嬛传']
del_item = TVs.pop()
n = TVs.pop(0)
print(TVs,del_item,n) # ['破产姐妹', '甄嬛传', '庆余年', '甄嬛传'] 甄嬛传 琅琊榜
4.改-in操作
# 1 .改 - 修改元素的值
# 语法:列表[下标] = 值 - 将列表中指定对应的元素修改成指定的值
# 练习:已经列表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) # [89, 60, 78, 60, 76, 99, 60, 66]
# 2.in 和 not in
# 值 in 列表 - 判断列表中是否存在指定值对应的元素
# 值 not in 列表 - 判断列表中是否不存在指定值对应的元素
subjects = ['高数','大物','c语言','毛概']
print('高数' in subjects) # True
print(['高数','大物'] in subjects) # False