这两个代码片段仅在构造列表的方式上有所不同。一用[]
,二用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.
这种行为的规则是什么?