私はジェネレータを「低レベル」でリストに変換することは可能であることを知っています(例えばlist(i for i in xrange(10))
)が、逆なしで最初にリストを反復処理します(例:(i for i in range(10))
)?
編集:私が達成しようとしていることを明確にするため、Word cast
を削除しました。
編集2:実際、私はジェネレーターを根本的なレベルで誤解していると思います。それは、朝のコーヒーの前にSOの質問を投稿しないことを教えてくれます!
これを試してください:an_iterator = iter(a_list)
... ここにドキュメント 。それはあなたが望むものですか?
組み込み関数list(...)
を使用してイテレーターからリストを取り出すことができ、iter(...)
を使用してリストからイテレーターを取り出すことができます。
mylist = list(myiterator)
myiterator = iter(mylist)
実際、構文はイテレータです:
iter_10 = (i for i in range(10))
リストを提供する[...]
を使用する代わりに。
この答えをご覧ください Pythonの隠された機能
実際、リストにイテレータインターフェイスが含まれている可能性があります。
list_iter = list.__iter__() # or iter(list), returns list iterator
list_iter.__next__() # list_iter.next() for python 2.x
そう、
lst_iter = iter(lst)
トリックを行います。
理解を使用し、それからジェネレーターを作成する方が理にかなっていますが:.
lst_iter_gt_10 = (item for item in lst if item > 10)
意味はわかりませんが、入力した内容は有効ですPython code:
>>> x = (i for i in range(10))
>>> x
<generator object at 0xb7f05f6c>
>>> for i in x: print i
0
1
2
3
4
5
6
7
8
9