【发布时间】:2012-01-31 16:01:17
【问题描述】:
可能重复:
Is it Pythonic to use list comprehensions for just side effects?
proper use of list comprehensions - python
Python 具有有用且优雅的list comprehension 语法。然而 AFAIK 它总是产生一个列表。有时我会因为它的紧凑和优雅而不需要结果列表而感到使用列表推导的冲动:
[some_func(x) for x in some_list if x>5]
some_func() 可能会返回我不需要的东西,它可能根本不会返回任何东西。我尝试了生成器语法:
(some_func(x) for x in some_list if x>5)
但正如您可能猜到的,它不会迭代 some_list。它只在特定的上下文中这样做:
other_func(some_func(x) for x in some_list if x>5)
那么...是否有我缺少的语法来让它工作,或者我应该总是回退到 3 行?
for x in some_list:
if x>5:
some_func(x)
【问题讨论】:
-
这里有一个合理且独特的问题,“如何在不创建一次性列表的情况下运行迭代器完成”。
-
@RaymondHettinger 是对的,我正在为不知道其名称或是否存在的构造寻找替代方案。这与其他两个相关问题完全不同
-
@IgnacioVazquez-Abrams,@delnan - 我还更改了问题的名称以反映这一点
标签: python syntax list-comprehension