1

イテレーターまたはジェネレーターオブジェクトを、このオブジェクトを反復処理した場合に取得するすべての要素を含むリストに変換するための、きちんとした、理想的には標準ライブラリベースのメソッドまたはレシピを探しています。Python 2.7 または 3.x に関する別の解決策がある場合は、知りたいと思います。基本的に、私は機能的に同等のものを探しています:

def expand(obj):
    result = []
    for o in obj:
        result.append(o)
    return result

Python のジェネレーターとイテレーターには多くの利点があり、これはおそらく.pyファイルで使用すべきではないことを理解しています。ただし、特にインタラクティブにプログラミングする場合や、テスト用に小さなデータセットを使用する場合には、これには用途があると思います。

これまでの私の最良の答えは、リスト内包表記です。

In [55]: a=[1,2,3]
In [56]: r=reversed(a)
In [57]: r
Out[57]: <listreverseiterator at 0x101f51a10>

In [58]: [x for x in r]
Out[58]: [3, 2, 1]

In [59]: def f(x):
   ....:     while x > 0:
   ....:         x-=1
   ....:         yield x
   ....:         

In [60]: [x for x in f(4)]
Out[60]: [3, 2, 1, 0]

Google と StackOverflow を検索してみましたが、明らかなことは何も見つかりませんでした。また、 itertoolsfunctoolsのドキュメントを確認しました。これらに基づいた試みのほとんどは、オブジェクトが増えるだけです。IPython magicksもざっと見ましたが、明らかなことは何もありませんでした。

4

1 に答える 1

9

これには非常に簡単な解決策があります。list(the_iterator)

于 2013-10-13T14:32:16.220 に答える