Python列表处理实战:索引、倒序、过滤与统计排序
本文通过具体案例演示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)
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









