列表的相关方法、推导式

本文介绍了Python列表的一些关键操作,包括sum、max、min、count等方法,以及如何删除列表中的重复元素。还详细讨论了列表推导式,强调其在简化代码和提高性能方面的优势,并提供了不同语法形式的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表相关方法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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值