[Python Cookbook] 通过列表推导构建列表

1. 任务

通过操作和处理一个序列(或其他的可迭代对象)中的元素来创建一个新的列表。

2. 解决方案

thenewlist = [ x + 23 for x in theoldlist if x > 5 ]

3. 讨论

优雅、清晰和务实,都是Python的核心价值观,列表推导说明了这三点是怎样和谐地统一起来的。事实上,当你直觉地考虑“改变某列表”时,列表推导常常是最好的办法。比如,加入需要将某列表L中的所有大于100的元素设置成100,最好的办法是:

L[:] = [ min(x, 100) for x in L ]

上面代码在给一个“整个列表的切片”赋值的同时,修改了该列表对位的数据,而不是试图对名字L重新绑定,比如写成L=…。

Leave a Reply