列表2
一、列表的增删改
-
增 - 添加元素
1)列表.append(元素) - 在指定列表的最后添加指定的元素(不会产生新的列表,而是直接在原列表中添加)
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女'] print(heroes) heroes.append('剑圣') print(heroes) heroes.append('琴女') print(heroes) scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66]
案例:提取scores中所有不及格的分数 [45, 29, 59]
new_scores = [] for i in scores: if i < 60: new_scores.append(i) print(new_scores)
练习1:利用append删除列表中所有的奇数
nums = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66] # [88, 76, 66] new_nums = [] for i in nums: if i % 2 == 0: new_nums.append(i) print(new_nums)
练习2:将scores中所有不及格的分数改成’补考’
scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66] # [89, '补考', 99, 65, 93, 81, '补考', 88, 76, '补考', 66] new_scores = [] for i in scores: if i < 60: new_scores.append('补考') else: new_scores.append(i) print(new_scores)
2)列表.insert(下标,元素) - 将指定元素插入到列表中指定下标对应的元素前
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女'] print(heroes) heroes.insert(-1,'亚索') print(heroes) heroes.insert(0,'石头人') print(heroes) heroes.insert(2,'百里玄策') print(heroes)
-
删 - 删除元素
1)del 列表[下标] - 删除列表中指定下标对应的元素
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女'] del heroes[1] print(heroes) # ['寒冰射手', '维鲁斯', '金克斯', '小法', '卡牌', '蛇女'] del heroes[1] print(heroes) # ['寒冰射手', '金克斯', '小法', '卡牌', '蛇女']
2)列表.remove(元素) - 删除列表中的指定元素
注意:
a.如果删除的元素不存在,那么会报错
b.如果删除的元素有多个,那么只删最前面那一个
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法','维鲁斯', '卡牌', '蛇女'] heroes.remove('小炮') print(heroes) #heroes.remove('塔魔') # ValueError: list.remove(x): x not in list heroes.remove('维鲁斯') print(heroes)
3)pop - 只是让数据从列表中消失,但不会从内存中消失 [且,有返回值]
两种形式:
a.列表.pop() - 取走列表最后一个元素,并且返回
b.列表.pop(下标) - 取走列表中指定下标对应的元素,并且返回
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法','维鲁斯', '卡牌', '蛇女'] result1 = heroes.pop() print(heroes) print(heroes,result1)#有返回值result1 heroes.pop(0) print(heroes)
-
改 - 修改元素的值
列表[下标] = 新元素 - 将列表中指定下标对应的元素改成新元素
heroes = ['寒冰射手', '小炮', '维鲁斯', '金克斯', '小法','维鲁斯', '卡牌', '蛇女'] heroes[1] = '孙悟空' print(heroes)
练习:将scores中所有低于60分的成绩修改成0分(使用改)
scores = [89, 45, 99, 65, 93, 81, 29, 88, 76, 59, 66] for index,item in enumerate(scores): if item < 60: scores[index] = 0 print(scores) # 方法2: for index in range(len(scores)): if scores[index] < 60: scores[index] = 0 print(scores)
二、列表相关操作
-
列表加法运算
语法:列表1 +列表2 - 将两个列表合并成一个新的列表
A = [10, 20, 30] B = [100, 200] C = A + B print(C) # [10, 20, 30, 100, 200] print(A + A) # [10, 20, 30, 10, 20, 30]
-
列表乘法运算
语法:列表 * N、N*列表 - 将列表中的元素重复N次产生一个新的列表
C = A * 2 print(C) # [10, 20, 30, 10, 20, 30] print(B * 3) # [100, 200, 100, 200, 100, 200] print(['小明','小爷'] * 3) # [100, 200, 100, 200, 100, 200]
-
列表比较运算
1)比较是否相等:==、!= - [列表有序,所以顺序不同,值就不同]
print([10, 20, 30] == [10, 20, 30]) # True print([10, 20, 30] == [10, 30, 20]) # False
2)比较大小:>、<、>=、<=
注意:两个列表比较大小,比较的是第一对不相等的元素的大小(相同位置上的元素
print([10, 20, 30] > [1, 100, 200, 300, 400]) #True print([10, 20, 30] > [10, 2, 200, 300, 400]) #True
-
in 和 not in
语法:
a.元素 in 列表 - 判断列表中是否存在指定的元素
b.元素 not in 列表 - 判断列表中是否不存在指定的元素
print(10 in [10, 20, 30]) # True print(10 in [[10, 20], 30]) #False print([10, 20] in [10, 20, 30]) #False # 练习:已经列表A和B, 打印A和B的公共元素 A = ['后羿', '甄姬', '鲁班7号', '赵云'] B = ['小乔', '孙悟空', '猪八戒', '后羿', '盾山', '赵云'] C = [] for i in A: if i in B: C.append(i) print(C) #['后羿', '赵云']
三、列表相关函数
-
求和sum(数字序列) - 求数字序列中所有元素的数值和
scores = [98, 23, 56, 88, 90, 70] result = sum(scores) print(result) # 1到100求和 result = sum(range(101)) print(result)
-
最大、最小值:max、min
max(序列) - 求序列中的最大元素
min(序列) - 求序列中的最小元素
scores = [98, 23, 56, 88, 90, 70] result = max(scores) print(result) result = min(scores) print(result)
补充:求最大值的逻辑
scores = [98, 23, 56, 88, 90, 99, 70] max1 = scores[0] for i in scores: if i > max1: max1 = i print(max1)
补充:求最小值的逻辑
scores = [98, 23, 56, 88, 90, 99, 70] min1 = scores[0] for i in scores: if i < min1: min1 = i print(min1)
-
sorted
- sorted(序列) - 将序列中的元素按从小到大的方式排序,创建一个新的列表,不会改变原序列的排序方式
scores = [98, 23, 56, 88, 90, 99, 70] sorted(scores) print(scores) # [98, 23, 56, 88, 90, 99, 70] result = sorted(scores) print(result) #[23, 56, 70, 88, 90, 98, 99]
-
sorted(序列,reverse=True) - 将序列中的元素按从大到小的方式排序,创建一个新的列表并返回
scores = [98, 23, 56, 88, 90, 99, 70] result = sorted(scores,reverse=True) print(result) # [99, 98, 90, 88, 70, 56, 23]
-
len
len(序列) - 统计序列中元素的个数
scores = [98, 23, 56, 88, 90, 99, 70] print(len(scores)) #7 print(len('xiaoye520daitaobobo')) print(len(range(1,100,2))) #50
-
list
list(序列) - 将指定的序列转换成列表(任何序列都可以转换成列表,转的时候直接将序列中的元素,作为列表中的元素)
result = list('abc123') print(result) result = list(range(5)) print(result)
四、列表相关方法
-
列表.clear() - 清空列表
nums = [10, 9, 8, 7] print(nums) # [10, 9, 8, 7] nums.clear() print(nums) # []
-
列表.count(元素) - 统计列表中指定元素的个数
nums = [10, 9, 89, 23, 10] print(nums.count(9)) print(nums.count(10))
-
列表.extend(序列) - 将序列中的元素全部添加到列表中去
list1 = [10, 20] list1.extend([100, 200]) print(list1) # list1.append([100, 200]) # print(list1) #[10, 20, 100, 200, [100, 200]] list1.extend('abc') print(list1) # [10, 20, 100, 200, 'a', 'b', 'c']
-
列表.index(元素) - 获取列表中指定元素对应的下标(返回的是从0开始的下标值)
nums = [10, 9, 89, 23, 10] # print(nums.index(100)) # ValueError: 100 is not in list print(nums.index(89))#2 print(nums.index(10))#0
-
列表.reverse() - 将列表倒序
nums = [10, 9, 89, 23, 10] nums.reverse() print(nums)#[10, 23, 89, 9, 10]
-
sort()
a.列表.sort() - - 将列表中的元素从小到大排序【直接修改原列表元素的顺序】
nums = [10, 9, 89, 23, 10] result = nums.sort() print(nums)#[9, 10, 10, 23, 89] print(result)#None # sorted(序列) - 将序列中的元素按从小到大的方式排序,创建一个新的列表,不会改变原序列的排序方式 nums = [10, 9, 89, 23, 10] result = sorted(nums) print(nums) # [10, 9, 89, 23, 10] print(result) # [9, 10, 10, 23, 89]
b.列表.sort(reverse=True) - 将列表中的元素从大到小排序,创建一个新的列表,不会改变原序列的排序方式
nums = [10, 9, 89, 23, 10] nums.sort(reverse=True) print(nums)# [89, 23, 10, 10, 9]
五、列表赋值问题
-
拷贝和直接赋值
需求:已知一个列表,现在需要创建和原列表一模一样的新的列表
1)直接赋值 - 一个变量直接给另外一个变量,赋值后两个变量
nums2 = nums print('nums:',nums) print('nums2:',nums2)
2)拷贝
# 一个变量通过拷贝的方式给另外一个变量赋值,赋值的时候会先复制原来变量中的数据,创建一个新数据,然后将新的数据对应的内存地址赋值给新变量 nums3 = nums * 1 print('nums3:',nums3) nums4 = nums + [] print('nums4:',nums4) nums5 = nums[:] print('nums5:',nums5) nums6 = nums.copy() print('nums6:',nums6) print('-----------------修改后--------------------') nums.append(100) print('nums2:',nums2) print('nums3:',nums3) print('nums4:',nums4) print('nums5:',nums5) print('nums6:',nums6)
六 、列表推导式
-
列表推导式结构1
1)语法:[表达式 for 变量 in 序列]
2)功能:让变量去序列中取值,一个一个的取,取完为止,每取一个值就计算一次表达式的结果,并且将计算结果作为列表的一个元素
result = [10 for i in range(5)] print(result) # [10, 10, 10, 10, 10] result = [i*2 for i in range(5)] print(result) #[0, 2, 4, 6, 8] # 应用 #案例1:将nums中所有的元素乘以2 nums = [10, 23, 89, 67] result = [i*2 for i in nums] print(result) # [20, 46, 178, 134] # 案例2:获取nums中所有元素的个位数 nums = [103, 230, 89, 67] result = [i % 10 for i in nums] print(result)# [3, 0, 9, 7] # 取十位数 result = [i//10%10 for i in nums] print(result)#[0, 3, 8, 6]
-
列表推导式结构2
1)语法:[表达式 for 变量 in 序列 if 条件语句]
2)原理:
让变量去序列中取值,一个一个的取,取完为止,每取一个值就判断一次条件是否成立,如果成立就计算表达式值作为列表的元素result = [i * 2 for i in range(5) if i % 2 == 0] print(result) #[0, 4, 8] # 案例1:删除scores中所有不及格的分数 scores = [98, 23, 56, 88, 90, 99, 70] result = [i for i in scores if i < 60] print(result) #[23, 56] # 案例2:提取nums中所有奇数的个位数 nums = [103, 230, 89, 67] result = [i % 10 for i in nums if i % 2 != 0] print(result) #[3, 9, 7]