博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python列表解析
阅读量:4171 次
发布时间:2019-05-26

本文共 1650 字,大约阅读时间需要 5 分钟。

python列表解析属于python的迭代中的一种,列表解析的功能基本上都可以通过for循环来实现,但相比python for循环,列表解析的代码量更少,解析速度更快。

1》将一个序列的每一个值代入一个任意表达式中,并将表达式的计算结果收集到一个新的列表中并返回。
>>> ordinal=[ord(x) for x in 'python']
>>> ordinal
[112, 121, 116, 104, 111, 110]
>>> l=[x**2 for x in range(5)]
>>> l
[0, 1, 4, 9, 16]
2》列表解析中,可以嵌套任意数量的for循环并且关联可选的if条件语句,其中if 条件语句是可选的。
>>> [(x,y) for x in range(5) if x%2==0 for y in range(5) if y%2==1]
[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]
3》列表解析和矩阵
>>> matrix
[[1, 2, 3], [4, 5, 6]]
>>> [row[0] for row in matrix] #访问矩阵第一列的元素
[1, 4]
>>> matrix[0] #访问矩阵第一行的元素
[1, 2, 3]
>>> [matrix[row][0] for row in range(len(matrix))] #访问第一列的元素
[1, 4]
4》列表解析与for循环
>>> [(x,y) for x in range(3) for y in range(3)]
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
上面的列表解析,与下面的for循环功能一致:
>>> l=[]
>>> for x in range(3):
...     for y in range(3):
...         l.append((x,y))
... 
>>> l

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

5》下面看一个例子:从书籍信息中找最低价格

books=[
        {"name":u"C#从入门到精通","price":23.7,"store":u"卓越"},
        {"name":u"ASP.NET高级编程","price":44.5,"store":u"卓越"},
        {"name":u"Python核心编程","price":24.7,"store":u"当当"},
        {"name":u"JavaScript大全","price":45.7,"store":u"当当"},
        {"name":u"Django简明教程","price":26.7,"store":u"新华书店"},
        {"name":u"深入Python","price":55.7,"store":u"新华书店"},
      ]
#第一种方法是使用二重for循环
price=[]
for item_dict in books:
    for key in item_dict:
        if key=='price':
            price.append(item_dict[key])
print min(price)
#第二种方法是使用列表解析
price=[item_dict[key] for item_dict in books for key in item_dict if key=='price']

print min(price)

当然,也可以采用更加简洁的列表解析,如下:

price=[item_dict['price'] for item_dict in books]

print min(price)

这几种方法,运行的结果都是23.7

(完)

转载地址:http://pdyai.baihongyu.com/

你可能感兴趣的文章
GoMet:Go编写的多平台Agent和控制器
查看>>
CVE-2019-11815:Linux kernel漏洞
查看>>
剥丝抽茧,层层破解!看我如何一步步绕过防火墙直至获取你的支付卡信息
查看>>
CVE-2019-0708漏洞: RDP= Really DO Patch?
查看>>
使用新型反检测技术:与MuddyWater相关的BlackWater恶意活动分析
查看>>
使用ee-outliers和Elasticsearch检测可疑子进程
查看>>
Office 365出现网络钓鱼,用户需多加注意
查看>>
MalConfScan:从已知的恶意软件家族中提取配置信息
查看>>
不死的EternalBlue(永恒之蓝)
查看>>
针对中亚地区政府部门的攻击:通过Office漏洞传播新型Hawkball后门
查看>>
Windows 10安全指南
查看>>
<<OCM实验选讲>> 第七课 Oracle数据库管理实验
查看>>
<<OCM实验选讲>> 第八课 Oracle性能优化实验
查看>>
<<OCM实验选讲>> 第十课 DG实验
查看>>
Oracle EBS R12.0.6 - 禁用Command Line JVM System Properties设置的全局Low-level logging
查看>>
Oracle EBS R12 - IE 8 打开form时碰到FRM-92050 /forms/lservlet/debug:-1错误的解决方法
查看>>
看一个大男人是怎样处理家庭矛盾的(绝对经典)(转)
查看>>
VMware6辅助启动.bat
查看>>
升级linux内核到2.6.24
查看>>
vbs脚本大全,配有实例
查看>>