【发布时间】:2017-03-28 08:32:37
【问题描述】:
Python 允许在列表推导中使用“if”条件,例如:
[l for l in lines if l.startswith('example')]
常规的“for”循环中缺少此功能,因此没有:
for line in lines if line.startswith('example'):
statements
需要评估循环中的条件:
for line in lines:
if line.startswith('example'):
statements
或嵌入生成器表达式,如:
for line in [l for l in lines if l.startswith('example')]:
statements
我的理解正确吗?有没有比我上面列出的更好或更 Pythonic 的方式来实现在 for 循环中添加条件的相同结果?
请注意,选择“行”只是作为示例,任何集合或生成器都可能存在。
【问题讨论】:
-
您是在问如何在 for 循环中获取复合条件?
-
但是这些是完全一样的。您从左到右阅读列表推导,它包含与完整 for 循环完全相同的功能。
-
你能说一下你的问题是什么吗?
-
@leaf:我扩大了一点问题以使其更清楚,如果您需要更多详细信息,请告诉我。
-
@DanielRoseman 不确定我是否理解您的评论。上面的所有示例都应该是等功能的。问题是:为什么 Python“for”循环中没有第二种语法,而它存在于列表推导中?我想这是因为相同的目标可以通过不同的、更 Python 的语法来实现,但我不确定是哪一个。
标签: python for-loop syntax generator list-comprehension