次のコード例を検討してください。mapこの例は、との間の機能の違いを強調するために示していますitertools.imap。私が本当にやりたいことは、リスト内包表記では実行できません。実際の問題では、リストを作成するのではなく、より大きなnumpy配列を小さな配列で埋めているからです。したがって、以下のコードへの対応として、次のことを提案しないでください。[f(x) for x in range(3)]
例:
g = []
def f(x):
g.append(x)
私が得た結果mapと itertools.map:
map(f, range(3)) # Results in g = [0,1,2]
itertools.imap(f, range(3)) # Does not change g
関数gによって行われるように変更したい。ただし、 Python 3のように動作する (または動作する) と
map聞いたことがあります。Python 2.7 を使用していますが、イテレータ バージョンのマップを使用する正しい方法を学びたいと考えています。と同じ結果を得るにはどうすればよいですか?mapitertools.imapitertools.imapmap
できます:
b = itertools.imap(f, range(3))
list(b) # This gives g = [0,1,2] if starting with an empty g.
これは正しい方法ですか、それともより良い方法はありますか?
前もって感謝します。