同步阅读进度,多语言翻译,过滤屏幕蓝光,评论分享,更多完整功能,更好读书体验,试试 阅读 ‧ 电子书库
8.2 列表解析
列表解析(list comprehension,简称listcomp)让你可以通过声明在单行内构造列表的内容。
没有列表解析的情况
>>> x = []>>> for i in (1, 2, 3):
... x.append(i)
...
>>> x
[1, 2, 3]
使用列表解析的实现
>>> x = [i for i in (1, 2, 3)]>>> x
[1, 2, 3]
可以同时使用多条for语句并使用if语句过滤元素:
x = [word.capitalize()for line in ("hello world?", "world!", "or not")
for word in line.split()
if not word.startswith("or")]
>>> x
['Hello', 'World?', 'World!', 'Not']
使用列表解析而不使用循环是快速定义列表的简洁方式。因为我们仍然在讨论函数式编程,值得一提的是通过列表解析构建的列表是不能依赖于程序的状态的1。这通常让它们比非列表解析构建的列表更加简洁易读。
注意
也有一些语法用于以同样的方式构建字典和集合:> {x:x.upper() for x in ['hello', 'world']}{'world': 'WORLD', 'hello': 'HELLO'}
> {x.upper() for x in ['hello', 'world']}
set(['WORLD', 'HELLO'])注意,这只在Python 2.7及后续版本中有效。
请支持我们,让我们可以支付服务器费用。
使用微信支付打赏
