01 列表的增删改
1.增 (3) - 添加元素
1)列表.append(元素) - 在指定列表的最后添加指定元素(不会产生新的列表,而是直接从列表中添加) (一次添加一个)
heroes=['寒冰射手','小炮','维鲁斯','金克斯','小法','卡牌','蛇女']
print(heroes)
heroes.append('剑圣')
print(heroes)
scores=[89,45,99,65,93,81,29,88,76,59,66]
#案例:提取scores中所有不及格的分数
new_scores=[]
for x in scores:
if x>=60:
new_scores.append(x)
print(new_scores)
#练习2:将scores中所有不及格的分数改成补考
scores=[89,45,99,65,93,81,29,88,76,59,66]
new_scores=[]
for x in scorse:
if x <60:
new_scorse.append(补考)
else:new_scorse.append(x)
print(new_scorse)
2)列表.insert(下标,元素) - 将指定元素插入到列表中指定下标对应的元素前
heroes=['寒冰射手','小炮','维鲁斯','金克斯','小法','卡牌','蛇女']
heroes.insert(0,'亚索')
print(heroes)
3)列表.extend(序列)
2.删 - 删除元素
1)del 列表(下标) - 删除列表中指定下标中对应的元素
heroes=['寒冰射手','小炮','维鲁斯','金克斯','小法','卡牌','蛇女']
del heroes[1]
print(heroes)
del heroes[1]
print(heroes)
2)列表.remove(元素) - 删除指定列表中的元素(如果元素不存在会报错;如果元素有多个,只删前面那一个)
heroes=['寒冰射手','小炮','维鲁斯','金克斯','小法','维鲁斯','卡牌','蛇女']
heroes.remove('小炮')
print(heroes)
3)
列表.pop() - 取出列表最后一个元素,并且返回
列表.pop(下标) - 取出列表中指定下标对应元素,并且返回
heroes=['寒冰射手','小炮','维鲁斯','金克斯','小法','维鲁斯','卡牌','蛇女']
heroes.pop()
print(heroes)
result2=heroes.pop(2)
print(heroes,result2)
4)列表.clear()
3.改 - 修改元素的值
列表[下标]=新的元素 - 将列表中指定下标对应的元素改成新元素
heroes=['寒冰射手','小炮','维鲁斯','金克斯','小法','维鲁斯','卡牌','蛇女']
heroes[1]='孙悟空'
print(heroes)
#练习:将scores中所有低于60分的成绩改成0分(使用改)
scores=[89,45,99,65,93,81,29,88,76,59,66]
for index in range(len(scores)):
if scores[index]<60:
scores[index]=0
print(scores)
for index,item in enumerate(scores):
if item<60:
scores[index]=0
print(scores)
02 列表的相关操作
1.列表的加法运算
列表1+列表2 - 将两个列表合并成一个新的列表
A=[10,20,30]
B=[100,200]
C=A+B
print(C) #[10,20,30,100,200]
2.列表的乘法运算
列表N、N列表 - 将列表中的元素重复N次产生新的列表
C=A*2
print(C)
print(B*3)
print(['小明','小花']*3)v
3.列表的比较运算
1)比较是否相等:==、!=
print([10,20,30]==[10,20,30]) #True
print([10,20,30]==[10,30,20]) #False
2)比较大小:>,<,>=,<=
列表1>列表2
两个列表比较大小,比较的是第一对不相等元素的大小(相同位置上的元素是一对)
print([10,20,30]>[1.100,200,400]) #True
print([10,20,30]>[10,2,100,200,300]) #True
4. in 和not in
.元素 in 列表 - 判断列表中是否存在指定的元素
.元素 not in 列表 - 判断列表中是否不存在指定的元素
print(10 in [10,20,30]) #True
print(10 in [[10,20],30]) #Flase
print([10,20] in [10,20,30]) #False
# 练习:已经列表A和B, 打印A和B的公共元素
C=[]
A = ['后羿', '甄姬', '鲁班7号', '赵云']
B = ['小乔', '孙悟空', '猪八戒', '后羿', '盾山', '赵云']
for x in A:
if x in B:
print(x)
3 列表的相关操作
1. sum(数字序列) -求数字序列中所有元素的数值和
scores=[98,23,56,88,90,70]
result=sum(scores)
print(result)
result=sum(range(101))
print(result)
2. max,min
.max(序列) - 求序列中的最大元素
.min(序列) - 求序列中的最小元素
scores=[98,23,56,88,90,70]
result=max(scores)
print(result)
result=min(scores)
print(result)
补充:求最大值的逻辑
.假设第一个元素是最大值保存到变量中,然后依次取出后面的每个元素和保存最大值的变量进行比较,如果后面取出来的值比最大值大,就
print(max1)
scores=[98,23,56,88,90,70]
max1=scores[0]
for x in scores[1:]:
if x>max1:
max1=x
print(max1)
3. sorted
sorted(序列) - 将序列中的元素按照从小到大的方式排序。创建一个新的列表
sorted(序列,reverse=True) - 从大到小
scores=[98,23,56,88,90,70]
result=sorted(scores)
print(result)
scores=[98,23,56,88,90,70]
result=sorted(scores,reverse=True)
print(result)
4. len 统计个数
5. list
list(序列) - 将指定的序列转换成列表(任何序列都可以转换成列表,转换的时候直接将序列中元素作为列表的元素)
result=list(range(5))
print(result)
result=list('abc123')
print(result)
04 列表相关函数
.列表.xxx()
1.列表.clear() - 清空列表
nums=[21,45,6,7]
print(nums)
nums.clear()
print(nums)
2.列表.count(元素) - 统计列表中指定元素的个数
nums=[10,9,89,23,10]
print(nums.count(10))
print(nums.count(9))
3.列表.extend(序列) - 将序列中的元素全部添加到列表中
list1=[10,20]
list1.extend([100,200])
print(list1)
4.列表.index(元素) - 获取列表中指定元素对应的下标
nums=[10,9,89,23,10]
print(nums.index(89)) #2
print(nums.index(10)) #0
5.列表.reverse() - 将列表倒序
nums=[10,9,89,23,10]
nums.reverse()
print(nums)
6.列表.sort() - 将列表中的元素从小到大排序(直接修改原列表元素的顺序)
列表.sort(reverse=True) - 将列表中的元素从大到小排列
nums=[10,9,89,23,50]
result=nums.sort()
print(nums)
print(result) #None
sorted(序列) - 将列表中的元素从小到大排序(不修改原序列中的顺序,而创建新的列表
nums=[10,9,89,23,50]
result=sorted(nums)
print(nums) #
print(result)
5 列表的赋值问题
补充:python中的变量保存数据,保存的是数据在内存中的地址(python中的变量全部都是针对变量)
1.拷贝和直接赋值
需求:已知一个列表,现在需要创建和愿列表一模一样的新列表
nums=[10,20,30,40]
#1)直接赋值 - 一个变量直接给另一个变量赋值,赋值后两个变量指向的是统一块内存
nums2=nums
print('nums',nums)
print('nums2:',nums2)
#2)拷贝 - 一个变量通过拷贝的方式给另外一个变量赋值,赋值的时候会先复制原来变量中的数据,然后将新的数据对应的内存地址给新的变量
nums3=nums*1
print('nums3:',nums3)
nums4=nums+[]
print('num4:',nums4)
nums5=nums[:]
print('nums5:',nums5)
nums6=nums.copy()
print('nums6:',nums6)
6 列表推导公式
列表推导式:快速创建列表的表达式(代码简洁)
1.列表推导式结构1
1)语法:
[表达式 for 变量 in 序列]
2)让变量去序列中取值,一个一个的取,去完为止,每取一个值就计算一次表达式的结果,并将计算结果作为列表的元素
result=[10 for x in range(5)]
print(result) #[10,10,10,10,10]
result=[x*2 for x in range(5)]
print(result)
#案例1:将nums中的所有元素乘以2
nums=[10,20,30,40]
result=[x*2 for x in nums]
print(nums)
#案例2:获取nums 中所有元素的个数
nums=[103,43,543,654]
result=[x%10 for x in nums]
print(result)
2.列表推导式结构2
1)语法:
[表达式 for 变量 in 序列 if 条件语句]
2)原理:让变量去序列中取值,一个一个的取,取完为止,每取一个字去判断一次条件是否成立,如果成立就计算表达式值作为元素的列表
result=[x*2 for x in range(5) if x%2==0]
print(result) #[0, 4, 8]
#案例1:删除scores中不及格的分数
scores=[80,99,23,67,56,82,76,45]
result=[x for x in scores if x>=60]
print(result) #[80, 99, 67, 82, 76]
#案例2:提取nums中所有奇数的个位数
nums=[103,230,89,67,78]
result=[x%10 for x in nums if x%2!=0]
print(result) #[3, 9, 7]