# 1. 遍历列表 - 将列表中的元素一个一个的取出来"""
1)直接获取列表元素
for 变量 in 列表:
循环体(循环体中变量获取到的是列表的元素)
2)通过遍历列表中每个元素的下标,来遍历列表中的元素
for 变量 in range(列表的长度):
循环体(循环体中变量获取到的是列表中每个元素的下标,从0开始的下标)
for 变量 in range(-1, -列表长度-1, -1):
循环体(循环体中变量获取到的是列表中每个元素的下标,从0开始的下标)
3)同时获取列表中每个元素的下标和每个元素
for 变量1,变量2 in enumerate(列表):
循环体(循环体中变量1依次获取列表中每个元素的下标,变量2依次获取列表中的每个元素)
"""
tvs =['甄嬛传','琅琊榜','仙剑奇侠传','金粉世家','亮剑','爱情公寓','庆余年']# 遍历方式1:for x in tvs:print(x)print('------------------------------------------华丽的分割线------------------------------------------------')# 遍历方式2:# print(len(tvs))for x inrange(len(tvs)):print(x, tvs[x])print('------------------------------------------华丽的分割线------------------------------------------------')for x inrange(-1,-len(tvs)-1,-1):print(x, tvs[x])print('------------------------------------------华丽的分割线------------------------------------------------')# 遍历方式3:for index, item inenumerate(tvs):print(index, item)# 练习1:1)求平均分 2)统计不及格学生的人数
scores =[89,78,61,92,20,63,51]
sum1 = count =0for x in scores:
sum1 += x
if x <60:
count +=1print('平均分:', sum1/len(scores),'不及格人数:', count)
03-列表增删改查
# 1.增 - 往列表中添加元素# 1)列表.append(元素) - 在指定列表的最后添加指定的元素
names =['肖生克的救赎','霸王别姬','阿甘正传']print(names)print('------------------------------------------华丽的分割线------------------------------------------------')
names.append('恐怖游轮')print(names)
names.append('沉默的羔羊')print(names)# 2)列表.insert(下标, 元素) - 将指定元素插入到列表中指定下标对应的元素前
names.insert(1,'加勒比海盗')print(names)# 案例:提取nums中所有的偶数
nums =[89,78,60,77,43,22,40]# [78, 70, 22, 40]
result =[]for x in nums:if x %2==0:
result.append(x)print(result)# 练习:删除scores中不及格的分数
scores =[89,78,61,92,20,63,51]# [89, 78, 61, 92, 63]
new_scores =[]for x in scores:if x >=60:
new_scores.append(x)print(new_scores)# 练习:将scores中所有不及格的分数修改成'重修'
scores =[89,78,61,92,20,63,51]# [89, 78, 61, 92, '重修', 63, '重修']
new_scores =[]for x in scores:if x <60:
new_scores.append('重修')else:
new_scores.append(x)print(new_scores)# 2.删 - 删除元素# 1)del 列表[下标] - 删除列表中指定下标对应的元素
names =['肖生克的救赎','加勒比海盗','霸王别姬','阿甘正传','恐怖游轮','沉默的羔羊']print(names)# ['肖生克的救赎', '加勒比海盗', '霸王别姬', '阿甘正传', '恐怖游轮', '沉默的羔羊']print('------------------------------------------华丽的分割线------------------------------------------------')del names[1]print(names)# ['肖生克的救赎', '霸王别姬', '阿甘正传', '恐怖游轮', '沉默的羔羊']del names[-1]print(names)# ['肖生克的救赎', '霸王别姬', '阿甘正传', '恐怖游轮']# 2) 列表.remove(元素) - 删除列表中指定元素# 注意:如果元素不存在会报错; 如果元素有多个,只删最前面那一个print('------------------------------------------华丽的分割线------------------------------------------------')
names =['肖生克的救赎','加勒比海盗','霸王别姬','阿甘正传','恐怖游轮','霸王别姬','沉默的羔羊','霸王别姬']
names.remove('加勒比海盗')print(names)# ['肖生克的救赎', '霸王别姬', '阿甘正传', '恐怖游轮', '霸王别姬', '沉默的羔羊', '霸王别姬']# names.remove('长江7号') # ValueError: list.remove(x): x not in list
names.remove('霸王别姬')print(names)# ['肖生克的救赎', '阿甘正传', '恐怖游轮', '霸王别姬', '沉默的羔羊', '霸王别姬']# 3)# 列表.pop(下标) - 取出列表中指定下标对应的元素并且返回# 列表.pop() - 取出列表中最后一个元素并且返回
names =['肖生克的救赎','加勒比海盗','霸王别姬','阿甘正传','恐怖游轮','霸王别姬','沉默的羔羊','霸王别姬']
result = names.pop(-2)print(names, result)# ['肖生克的救赎', '加勒比海盗', '霸王别姬', '阿甘正传', '恐怖游轮', '霸王别姬', '霸王别姬'], 沉默的羔羊
result = names.pop()print(names, result)# ['肖生克的救赎', '加勒比海盗', '霸王别姬', '阿甘正传', '恐怖游轮', '霸王别姬'], 霸王别姬print('------------------------------------------华丽的分割线------------------------------------------------')# 练习:删除scores中所有不及格的分数# 1)有问题的代码 - 遍历列表的时候因为删除问题导致没有将列表中所有的元素取到
scores =[67,40,50,78,30,60,55,39]for x in scores:if x <60:
scores.remove(x)print(scores)# [67, 50, 78, 60, 39]"""
scores = [67, 50, 78, 60, 39]
第1次:x = 67: if 67 < 60 -> if False
第2次:x = 40: if 40 < 60 -> if True -> scores.remove(40)
第3次:x = 78: if 78 < 60 -> if False
第4次:x = 30: if 30 < 60 -> if True -> scores.remove(30)
第5次:x = 55: if 55 < 60 -> if True -> scores.remove(55)
第6次:循环结束!
"""# 解决方案2 - 删除之前对原数据进行备份,遍历备份数据,删除原数据print('------------------------------------------华丽的分割线------------------------------------------------')
scores =[67,50,78,30,60,55,39]# new_scores = [67, 50, 78, 30, 60, 55, 39]# new_scores = scores[:]for x in scores[:]:if x <60:
scores.remove(x)print(scores)# 解决方案2 - 倒着删# 0 ~ 长度-1# 长度-1, ..., 0
scores =[67,50,78,30,60,55,39]for x inrange(len(scores)-1,-1,-1):if scores[x]<60:del scores[x]print(scores)"""
scores = [67, 78,60]
x: 6 ~ 0
x = 6: 39
x = 5: 55
x = 4: 60
x = 3: 30
x = 2: 78
x = 1: 50
x = 0: 67
"""# 解决方法3 - 需要删除的时候下标不增加
scores =[67,50,78,30,60,55,39]
index =0whileTrue:if scores[index]<60:del scores[index]else:
index +=1if index ==len(scores):breakprint(scores)# 3. 改 - 修改元素的值# 列表[下标] = 值 - 修改指定下标对应的元素
scores =[67,50,78,30,60,55,39]
scores[0]=100print(scores)# [100, 50, 78, 30, 60, 55, 39]
04-列表相关操作
# 1、列表数学运算: +、*# 1) 列表1 + 列表2 - 将列表1中的元素和列表2中的元素进行合并,产生一个新的列表
list1 =[10,20,30]
list2 =[100,200,'abc']
list3 = list1 + list2
print(list3)# [10, 20, 30, 100, 200, 'abc']# 2) 列表 * N - 重复N次列表中的元素产生一个新的列表print(list1 *2)# 2. 列表比较运算:>、<、>=、<=、==、!=# 1)判断是否相等# 两个列表一模一样的时候才相等print(list1 ==[10,20,30])# Trueprint(list1 ==[20,10,30])# False# 2)比较大小 - 比较第一对不相等的元素的大小# 列表1 > 列表2print([10,20,300,400]>[10,22,30])# False# print([10, 20, 300, 400] > [10, 'abc', 30]) # TypeError: '>' not supported between instances of 'int' and 'str'print([10,20,30]>[5,'abc'])# 3. in 和 not in# 数据 in 列表 - 判断列表中是否存在指定的数据# 数据 not in 列表 - 判断列表中是否不存在指定的数据
list1 =[10,20,30]print(10in list1)# Trueprint(1in list1)# Falseprint([10,20]in list1)# Falseprint(10in[[10,20],30])# Falseprint(10in[[10,20],30][0])# True# [[10, 20], 30][0] -> 列表[0] -> [10, 20]
list2 =[[10,20],30]print(list2[0])# [10, 20]# print(10 in [[10, 20], 30][0])# 练习:去掉nums中重复的元素
nums =[10,23,40,10,55,23,40,10]# [10, 23, 40, 55]
new_nums =[]for x in nums:if x notin new_nums:
new_nums.append(x)print(new_nums)
05-列表相关函数
# 1.max、min# max(列表) - 获取列表中的最大值# min(列表) - 获取列表中的最小值
scores =[19,89,93,80,76,62,56]print(max(scores))print(min(scores))# 案例:在不使用max的情况下,求scores中最高分
max1 = scores[0]for x in scores[1:]:if x > max1:
max1 = x
print(max1)# 练习:求nums中个位数最小的元素
nums =[90,83,62,77,59,81]
m = nums[0]for x in scores[1:]:if x %10< m %10:
m = x
print(m)# 2.sorted# sorted(列表) - 将列表中的元素从小到大排序,创建一个新列表# sorted(列表, reverse=True) - 将列表中的元素从大到小排序,创建一个新列表
nums =[90,83,62,77,59,81]
new_nums =sorted(nums)print(new_nums)# [59, 62, 77, 81, 83, 90]
new_nums =sorted(nums, reverse=True)print(new_nums)# [90, 83, 81, 77, 62, 59]# 按个位数的大小从小到大排序
new_nums =sorted(nums, key=lambda x: x %10)print(new_nums)# [90, 81, 62, 83, 77, 59]# 3.sum# sum(列表) - 求列表中所有元素的和
scores =[19,89,93,80,76,62,56]print(sum(scores))# 4.len# len(列表) - 获取列表中元素的个数print(len(scores))# 5.list# list(数据) - 将指定数据转换成列表(数据必须是序列 - 所有的序列都可以转换成列表, 转换的时候直接将序列中的元素转换成列表中的元素)
result =list('abc')print(result)# ['a', 'b', 'c']
result =list(range(5))print(result)# [0, 1, 2, 3, 4]
# 列表推导式 - 创建列表的表达式# 1. 结构1"""
语法:
[表达式 for 变量 in 序列]
创建列表的原理:让变量去序列中取值,一个一个的取,取完为止,每取一个值就计算一次表达式的结果并且将计算的结果作为列表的一个元素
"""
result =[10for x inrange(5)]print(result)# [10, 10, 10, 10, 10]
result =[x for x inrange(5)]print(result)# [0, 1, 2, 3, 4]
result =[10*x for x inrange(5)]print(result)# [0, 10, 20, 30, 40]# 练习:用列表推导式将nums中所有的元素都乘以2
nums =[19,45,6,7]# [38, 90, 12, 14]
result =[x*2for x in nums]print(result)# [38, 90, 12, 14]# 练习:获取nums中所有元素的十位数
nums =[189,78,102,99]# [8, 7, 0, 9]
result =[x //10%10for x in nums]print(result)# 练习:将scores中所有的元素变成'及格'或者'不及格'
scores =[89,70,56,42,99,81,44]# ['及格', '及格', '不及格', '不及格', '及格', '及格', '不及格']
result =['不及格'if x <60else'及格'for x in scores]print(result)# 2. 结构2"""
[表达式 for 变量 in 序列 if 条件语句]
创建列表的原理:让变量去序列中取值,一个一个的取,取完为止,每取一个值就判断一次条件是否成立,如果成立就计算表达式的结果作为列表的元素
"""
result =[x*2for x inrange(10)if x %2==0]print(result)# [0, 4, 8, 12, 16]# 练习:删除nums中多有大于70的奇数
nums =[90,83,62,77,59,81]# [90, 62, 59]
result =[x for x in nums ifnot(x >70and x %2!=0)]print(result)# 练习2:获取num中的所有偶数,并且将偶数除以2
nums =[90,83,62,77,59,81]# [45, 31]
result =[x//2for x in nums if x %2==0]print(result)