格納された値としてリストを使用して辞書でネストされたジェネレーターの理解を使用してみたところ、次の奇妙な(私にとって)動作が観察されました。
Python 2.6.5 (r265:79063, Oct 1 2012, 22:07:21)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> dummy = {1:[1,2,3],2:[2,3,4],3:[3,4,5]}
>>> a = (d for _,d in dummy.iteritems())
>>> a.next()
[1, 2, 3]
>>> a.next()
[2, 3, 4]
>>> a.next()
[3, 4, 5]
>>> a.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
意味あり。以下は(少なくとも私にとっては)そうではありません
>>> aa = (dd for dd in (d for _,d in dummy.iteritems()))
>>> aa.next()
[1, 2, 3]
>>> aa.next()
[2, 3, 4]
>>> aa.next()
[3, 4, 5]
>>> aa.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
(試行された)ネストされたジェネレーターの理解が、ネストされていないバージョンと同じように動作するのはなぜですか?私は、各aa.next()がリストではなく、単一の要素の結果を与えることを期待していました。