1.25学习总结
列表
1.什么是列表
列表是容器型数据类型,用[]作为标志,里面多个元素用逗号隔开:[元素1,2,3,。。。]列表是可变的(里面的个数、值、顺序都是可变);列表是有序的(元素有固定下标)
元素:任何python支持的类型数据都可以作为列表,同一个列表的元素的类型可以不同
list1 = [] # --空列表
list2 = [10, 20, 30, '张三', 12.5]
list3 = [10, 20, [23, 53]] # ---三个元素
print(list3)
2.获取元素----查
1.获取单个元素
语法:列表[下标] —获取元素下标确定的元素
下标:又叫索引,代表元素的位置信息。
值得范围有两种:1).元素从左往右,是从0开始依次增加(通用)
2).元素从右往左对应的下标,是从-1开始依次减少(python特有)
下标越界
heroes = ['鲁班七号', '后裔', '马可波罗', '虞姬', '孙尚香']
print(heroes[1]) # 后裔
print(heroes[3]) # 虞姬
print(heroes[-2]) # 虞姬
print(heroes[-3]) # 马可波罗
# print(heroes[6]) IndexError: list index out of range
# 练习:获取列表heroes中的马克波罗
print(heroes[2])
print(heroes[-3])
2.遍历
方法一:直接获取
for 变量 in 列表:
循环体
方法二:通过下标遍历,获取元素(稍许复杂)
len(列表) --获取列表的长度(获取列表元素个数)
for 变量 in range(len(列表)): —0到(列表长度-1),刚好和下标相对应
循环体
for x in heroes:
print('x : ', x)
# 练习:定义一个列表保存一个班所有学生的分数
# 1. 求所有学生的总分
# 2. 统计不及格学生的个数
scores = [45, 67, 89, 90, 77, 23, 50]
sum1 = 0
count = 0
for x in scores:
print(x)
sum1 += x
if x < 60:
count += 1
print('总分:', sum1, '不及格个数为:', count) # 总分: 441 不及格个数为: 3
# 练习:打印位置在偶数位上的元素 ----通过下标来获取元素
# 1))
for index in range(len(scores)):
if index & 1 == 0:
print(scores[index])
print('===================================')
# 2))
for index in range(0, len(scores), 2):
print(scores[index])
3.获取部分元素 —返回一个小列表
列表[开始下标:结束下标:步长]
步长为正:[开始下标:结束下标),“从前往后”,左闭右开区间(结束下标取不到)
步长为负:[开始下标:结束下标),”从后往前“,下标增加步长(相当于减)
heroes = ['鲁班七号', '后裔', '马可波罗', '虞姬', '孙尚香']
print(heroes[1:4:1]) # ['后裔', '马可波罗', '虞姬']
print(heroes[1:4:2]) # ['后裔', '虞姬']
print(heroes[0:-1:1]) # ['鲁班七号', '后裔', '马可波罗', '虞姬']
print(heroes[1:4:-1]) # [] 返回空列表。区间范围不对(从后往前取)
print(heroes[4:1:1]) # [] 返回空列表。区间范围不对(从前往后取)
print(heroes[-1:-4:1]) # [] 返回空列表。区间范围不对(从前往后取)
print(heroes[-1:0:-2]) # ['孙尚香', '马可波罗']
- 省略步长:列表[开始下标:结束下标] == 列表[开始下标:结束下标:1]
# 从开始下标开始,一直到结束下标为止
heroes = ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香', '狄仁杰', '百里守约']
print(heroes[1:5]) # ['后裔', '马可波罗', '虞姬', '孙尚香']
print(heroes[-5:-2]) # ['马可波罗', '虞姬', '孙尚香']
print(heroes[0:-3]) # ['鲁班7号', '后裔', '马可波罗', '虞姬']
print(heroes[-1:2]) # []
print(heroes[0:7]) # ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香', '狄仁杰', '百里守约']
2)省略开始下标:
列表[:结束下标:步长] :如果步长为正,从第一个元素开始,往后;如果为负,从最后一个元素,往前。
列表[:结束下标]
print(heroes[:3]) # ['鲁班7号', '后裔', '马可波罗']
print(heroes[:3:-1]) # ['百里守约', '狄仁杰', '孙尚香']
print(heroes[:-3:1]) # ['鲁班7号', '后裔', '马可波罗', '虞姬']
print(heroes[:-5:-2]) # ['百里守约','孙尚香']
print(heroes[:4:3]) # ['鲁班7号',''虞姬]
- 省略结束下标:步长为正,结束下标省略,从开始下标取到最后;步长为负,从后往前,取到第一个元素
列表[开始下标::步长]
列表[开始下标:]
heroes = ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香', '狄仁杰', '百里守约']
print(heroes[2::2]) # ['马可波罗', '孙尚香', '百里守约']
print(heroes[-3::-1]) # ['孙尚香', '虞姬', '马可波罗', '后裔','鲁班7号']
4)一起省
print(heroes[::2]) # ['鲁班7号', '马可波罗', '孙尚香', '百里守约']
print(heroes[:]) # 取整个列表 ['鲁班7号', '后裔', '马可波罗', '虞姬', '孙尚香', '狄仁杰', '百里守约']
print(heroes[::-1]) # 表逆序 ['百里守约', '狄仁杰', '孙尚香', '虞姬', '马可波罗', '后裔', '鲁班7号']
3.增删改,和in操作
1.增 --往列表中添加元素
- 列表.append(元素) --在指定列表的最后追加一个指定的元素
movies = ['看不见的客人', '不能说的秘密', '烈日灼心', '唐人街探案', '恐怖游轮']
print(movies)
movies.append('星际穿越')
print(movies)
2)插入 列表.insert(下标,元素) --在列表指定下标对应元素前,插入元素
movies = ['看不见的客人', '不能说的秘密', '烈日灼心', '唐人街探案', '恐怖游轮']
movies.insert(1, '忍者神龟')
print(movies)
movies.insert(-2, '变形金刚')
print(movies)
# 练习:输入一个学生的成绩,将输入的成绩插入到列表scores,并且保证插入后不影响从大到小的规律
scores = [100, 97, 95, 87, 82, 82, 80, 76, 72, 65, 60, 57, 53, 40]
num = int(input('请输入学生成绩:'))
for index in range(len(scores)): # 下标的遍历
if num >= scores[index]:
scores.insert(index, num)
break
else:
scores.append(num)
print(scores)
2.删 --删除列表中某个元素
1)语法:del 列表[下标] --删除指定元素
movies = ['看不见的客人', '不能说的秘密', '烈日灼心', '唐人街探案', '恐怖游轮']
del movies[1]
print(movies)
2)语法:列表.remove(元素)
movies = ['看不见的客人', '不能说的秘密', '烈日灼心', '唐人街探案', '恐怖游轮']
movies.remove('不能说的秘密')
print(movies)
3):
列表.pop() --取出列表中的最后一个元素,并且返回
列表.pop(下标) --取出列表中指定下标的元素,并且返回
movies = ['看不见的客人', '不能说的秘密', '烈日灼心', '唐人街探案', '恐怖游轮']
del_item = movies.pop()
print(movies, del_item)
3.改
语法:列表[下标] = 值 --将列表中指定下标对应的元素改成指定的值
subjects = ['高数', '大物', 'C语言', '毛概']
subjects[0] = '英语'
print(subjects)
# 练习:已经列表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)
4.in 和 not in
值 in 列表 ----判断列表中是否存在指定值对应的元素
movies = ['看不见的客人', '不能说的秘密', '烈日灼心', '唐人街探案', '恐怖游轮']
print('看不见的客人' in movies) # True
nums = [1, 2, 3, 4]
print([1, 2] in nums) # False