【发布时间】:2018-03-31 10:08:56
【问题描述】:
假设我希望计算和查看一个列表推导的结果,它需要一段时间来计算但只返回少量结果;例如(人工示例),
L = [x for x in range(100000000) if x<10]; print(L)
有没有一种简单的方法可以在计算这些元素后立即打印它们,而不是在最后打印所有元素?可以编写一个装饰器来做到这一点:
import sys
def print_as_computed(gen):
try:
while True:
v = next(gen)
print v
sys.stdout.flush()
yield v
except StopIteration:
pass
L1 = list(print_as_computed(x for x in range(10000000) if x<10))
但我想知道是否有内置函数可以做到这一点,或者更标准/Pythonic 的方式。
【问题讨论】:
-
您正在寻找的内置方式是
for循环。列表推导式创建列表。如果您需要在创建该列表时执行某些操作,请改用循环。