如何用Python列表推导式一行命令生成过滤并排序的新列表?
解决方法
首先,你写的列表推导式有问题,正确的筛选逻辑需要加上判断条件。然后排序可以结合排序工具来实现,下面是两种可行的方案:
方案一:筛选+排序一步完成
用sorted()函数包裹列表推导式,在筛选出5的倍数的同时直接完成排序:
a = [5,11,10,65,100,1,15,19,20,25,32,35,41] b = sorted([i for i in a if i % 5 == 0])
执行后b的结果为[5, 10, 15, 20, 25, 35, 65, 100]。
方案二:先筛选再排序(分步操作)
先用列表推导式筛选出所有5的倍数,再对筛选后的列表调用sort()方法完成排序:
a = [5,11,10,65,100,1,15,19,20,25,32,35,41] b = [i for i in a if i % 5 == 0] b.sort()
最终b同样会得到排序后的5的倍数列表。
核心逻辑就是:列表推导式负责筛选符合条件的元素,排序则借助sorted()函数或列表自带的sort()方法实现,两者结合就能满足你的需求。
内容的提问来源于stack exchange,提问作者AtifRiaz
相关产品推荐
相关产品推荐

