Python列表处理实战:索引、倒序、过滤与统计排序

云舒
云舒
发布时间:2026-10-16 | 2人浏览过
原创

本文通过具体案例演示Python列表的多种处理方式。涵盖使用enumerate获取索引、切片实现倒序、列表推导式筛选偶数并翻倍。此外,深入讲解如何结合random生成随机列表,利用字典统计元素频次,并通过sorted函数与lambda表达式实现按出现次数降序排序,提供从基础到进阶的实用代码示例。

Python列表基础处理:索引、反转与筛选

初学者在学习Python时,常会遇到一些基础但实用的数组处理题目。


假设有一个列表变量


a = [1, 2, 3, 4, 5, 6]


我们需要完成以下任务:首先,


0, 1


1, 2


2, 3


3, 4


4, 5


5, 6


打印输出索引与值的对应关系。


其次,将列表a倒序排列,得到 [6, 5, 4, 3, 2, 1]。


最后,从a中筛选出偶数,并将每个偶数乘以2,最终结果应为 [4, 8, 12]。



以下是初步的实现思路:


复制代码

代码如下:


a=[1,2,3,4,5,6]



for i in a:


print a.index(i),',',i



a.reverse();



print a



for i in a:


if i%2==0


print i*2



虽然上述代码能完成基本功能,但专家指出这种写法不够Pythonic。改进后的代码如下:


复制代码

代码如下:


for k,v in enumerate(a):


print k,v


print a[::-1]


print [i*2 for i in a if not i%2]



随机列表生成与频次统计排序实战

接着,专家又提出了一道进阶题目:



生成一个包含200个随机正整数(范围1~15)的列表。


统计其中每个正整数出现的次数,并按出现次数从高到低排序输出结果。



初学者可能不清楚random模块需要显式导入。



经过尝试,最终实现的代码如下:


复制代码

代码如下:


>>> import random


>>> mylist = [random.randint(1,15) for i in range(1,200)]


>>> s={}


>>> for i in mylist:


if not s.has_key(i):


s[i]=0


else:


s[i]+=1




>>> cmplist = sorted(s.items(),key=lambda(d):d[1])


>>> result = cmplist[::-1]


>>> print result


[(8, 20), (13, 19), (12, 16), (9, 15), (6, 15), (3, 14), (2, 12), (14, 11), (4, 11), (15, 10), (7, 10), (11, 9), (5, 9), (1, 9), (10, 4)]



在循环统计时,专家建议使用字典的get方法简化代码:


复制代码

代码如下:


for i in mylist:


s[i]=s.get(i,0)+1



此外,sorted函数支持直接指定倒序排列。通过查阅资料,可以使用以下方式实现从大到小的排序:


sorted(d.items(),cmp=lambda x,y:cmp(x[1],y[1]),reverse=True)

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表