列表相关方法sum、max、min、count
sum:计算数字列表中所有元素的和
numlist=[12,13,14,15,16,90]
print(sum(numlist)) #160
max \ min:求数字列表中最大或最小值
numlist = [12, 13, 14, 15, 16, 90]
print(max(numlist)) #90
print(min(numlist)) #12
count:统计某个元素在列表中出现的次数
numlist = [12, 13, 14, 15, 16, 90]
print(numlist.count(1)) #1这个元素在列表中出现几次,结果为0
sort:默认将列表从小到大排序,直接修改列表本身,sort返回值为空值
numList1 = [10, 30, 0, 100, 5, -100]
print('sort', numList1.sort()) #sort None
print('sort', numList1) #sort [-100, 0, 5, 10, 30, 100]
sorted:默认将列表从小到大排序,sorted不修改列表本身,返回排好序的列表结果
numList1 = [10, 30, 0, 100, 5, -100]
print('sorted', sorted(numList1)) #sorted [-100, 0, 5, 10, 30, 100]
print('sorted',numList1) #sorted [10, 30, 0, 100, 5, -100]
reverse:将列表倒序输出,直接修改列表本身,返回值是None
numList1 = [10, 30, 0, 100, 5, -100]
print('reverse', numList1.reverse())#reverse None
print('reverse', numList1)#reverse [-100, 5, 100, 0, 30, 10]
切片:将列表倒序
numList1 = [10, 30, 0, 100, 5, -100]
print(numList1[::-1]) #[-100, 5, 100, 0, 30, 10]
index: 查找某个元素出现的位置,从左向右找,找到此元素第一次出现的位置后直接停止查找
list1 = ['abcd', 1, 2, 3, 4, 1]
print(list1.index(1)) #1
index:还可以直接执行从哪个位置开始查找
list1 = ['abcd', 1, 2, 3, 4, 1]
print(list1.index(1, list1.index(1) + 1)) #5
思考:如果从list1中查找第二个1出现的位置:
list1 = ['abcd', 1, 2, 3, 4, 1]
numIndex = list1.index(1)#先查找第一个1的位置
list2 = list1[numIndex + 1:] #将没有第一个1的列表切出来
print(list2.index(1) + len(list1[:numIndex + 1]))#新列表中的第一个1(相当于原列表中的第二个1),再将去掉的部分长度补回来 ,加1因为右开区间
一、成员运算
list1=[1,2,3,'abc',[1,2,3]]
print(1 in list1) # True
print([3] not in list1) #True
二 、列表比较大小
有序容器比较大小
‘’’
1、两个容器数据类型一致
2、比较的是第一对不相同元素大小,并且两个元素的数据类型要一致
3、两个有序容器找不到第一对不相同元素,谁长谁大
‘’’
list2=[1,2,4]
list3=[1,2,5]
print(list3>list2) #True
练习
print([3]>[1,2,3])#True
print([123>[213]]) #False
三、如何删除列表重复元素
name_list = [‘张三’, ‘李四’, ‘王五’, ‘李四’, ‘王五’, ‘王五’, ‘张三’]
将上方列表转为结果: [‘张三’, ‘李四’, ‘王五’]
错误示范:
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
count = 0
for i in name_list:
count += 1
if name_list.count(i) > 1:
print(f'{i}是重复的')
name_list.remove(i)
print(name_list) #['李四','李四','王五','张三']
print(count) #4 只执行4次
正确解决问题如下:
1、间接删除
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
names = []
for i in name_list:
if i not in names:
names.append(i)
print(names)
2、控制下标
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
index_ = 0
while index_ < len(name_list):
if name_list.count(name_list[index_]) > 1:
del name_list[index_]
else:
index_ += 1
print(name_list)
3、倒着删除
name_list = ['张三', '李四', '王五', '李四', '王五', '王五', '张三']
for i in range(len(name_list) - 1, -1, -1): #6 5 4 3 2 1 0
if name_list.count(name_list[i]) > 1:
del name_list[i]
print(name_list)
四、列表推导式
在创建列表时向列表添加元素
意义
1、简化代码,提高代码可读性
2、在某些场景下可以使用列表推导式代替append
性能比较
列表推导式大于append
语法一
[表达式 for 变量 in 容器]
表达式都是向列表添加元素
练习
将1-100添加到列表
numlist=[] #创建列表
for i in range(1,101):#循环遍历 1 2 3 4 ..... 100
numlist.append(i)
语法二
[表达式 for 变量 in容器 if条件]
for循环执行一次,条件成立,表达式结果添加到列表中
numlist_3=[i for i in range(0,101) if i % 5==0 ]
语法三
[表达式 for 变量1 in1容器1 for 变量2 in1容器2]
for循环执行1次,第二个for循环执行n次,表达式的结果向列表添加1次
list1 = [f'{index} * {column} = {index * column}' for index in range(1, 10) for column in range(1, index + 1)]
print(list1)