42

リストがあるとします

data = []
data.append("A")
data.append("B")
data.append("C")
data.append("D")

これをジェネレーターに変換するにはどうすればよいですか? サンプルコードに関するヘルプは大歓迎です...

URL を見つけました: http://eli.thegreenplace.net/2012/04/05/implementing-a-generatorield-in-a-python-c-extension/

これは私がやりたいことですか?

4

7 に答える 7

56

ジェネレータを作成しますか? yieldジェネレーターは、例えばキーワード ( term-generator を参照)を使用して構築されたイテレーター型を返す関数です。本当にこれが必要な場合は、steven-rumbalskiの答えがまさにあなたが探しているものです:

data_gen = (y for y in data)

ほとんどの場合、メソッドを使用する場合など、イテレータオブジェクトを直接作成する必要がありますnext()。この場合、答えは上記のmgilsonによるコメントに暗示されています。

data_iter = iter(data)

data_iter = data.__iter__()これはと同等です。関数#iter .

于 2014-12-12T11:48:37.557 に答える
5
import itertools
iter_data = itertools.chain(data)

そのようです:

In [10]: data
Out[10]: [1, 2, 3, 4, 5, 6, 7, 8, 9]

In [11]: iter_data=itertools.chain(data)

In [12]: iter_data
Out[12]: <itertools.chain at 0x1ce8950>

In [13]: iter_data.next()
Out[13]: 1
于 2013-04-16T15:47:18.817 に答える