我正在使用Python 2.7.我有一个列表,我想使用for循环迭代该列表的一个子集受某些条件限制.以下是我想要做的事情的说明:
l = [1, 2, 3, 4, 5, 6]
for e in l if e % 2 == 0:
print e
Run Code Online (Sandbox Code Playgroud)
在我看来它非常整洁和Pythonic,并且在各方面都很可爱,除了语法错误的小问题.这个替代工作:
for e in (e for e in l if e % 2 == 0):
print e
Run Code Online (Sandbox Code Playgroud)
但是作为罪恶是丑陋的.有没有办法直接添加条件到for循环结构,而不构建生成器?
编辑:您可以假设我实际想要执行的处理和过滤e
比上面的示例更复杂.处理尤其不属于一行.
简单易读的解决方案有什么问题:
l = [1, 2, 3, 4, 5, 6]
for e in l:
if e % 2 == 0:
print e
Run Code Online (Sandbox Code Playgroud)
你可以拥有任何数量的陈述,而不仅仅是一个简单的陈述print e
,没有人不得不试图弄清楚它的作用.
如果你需要将子列表用于其他东西(不只是迭代一次),为什么不构造一个新的列表:
l = [1, 2, 3, 4, 5, 6]
even_nums = [num for num in l if num % 2 == 0]
Run Code Online (Sandbox Code Playgroud)
现在迭代了even_nums
.还有一行,更具可读性.
归档时间: |
|
查看次数: |
118 次 |
最近记录: |