【发布时间】:2015-09-30 09:47:16
【问题描述】:
这两个代码片段仅在构造列表的方式上有所不同。一个使用[],另一个使用list()。
这个消耗迭代然后引发StopIteration:
>>> try:
... iterable = iter(range(4))
... while True:
... print([next(iterable) for _ in range(2)])
... except StopIteration:
... pass
...
[0, 1]
[2, 3]
这个消耗了可迭代对象并永远循环打印空列表。
>>> try:
... iterable = iter(range(4))
... while True:
... print(list(next(iterable) for _ in range(2)))
... except StopIteration:
... pass
...
[0, 1]
[2, 3]
[]
[]
[]
etc.
这种行为的规则是什么?
【问题讨论】:
标签: python list-comprehension generator-expression