これら 2 つのコード フラグメントは、リストの作成方法のみが異なります。1 つは を使用し[]
、もう1 つは を使用しlist()
ます。
これは iterable を消費し、次に a を発生させ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.
この行動のルールは何ですか?