web-dev-qa-db-ja.com

NameError:名前 'reduce'はPythonで定義されていません

Python 3.2を使用しています。これを試しました:

xor = lambda x,y: (x+y)%2
l = reduce(xor, [1,2,3,4])

そして、次のエラーが発生しました:

l = reduce(xor, [1,2,3,4])
NameError: name 'reduce' is not defined

reduceをインタラクティブコンソールに印刷しようとしました-このエラーが発生しました:

NameError: name 'reduce' is not defined


reduceは本当にPython 3.2で削除されましたか?その場合、代替案は何ですか?

166
Sergey

functools に移動しました。

251

あなたは付け加えられます

from functools import reduce

リデュースを使用する前に。

159
3heveryday

または、6つのライブラリを使用する場合

from six.moves import reduce
4
Azd325

この場合、私は以下が同等であると信じています:

l = sum([1,2,3,4]) % 2

これに関する唯一の問題は、大きな数を作成することですが、おそらくモジュロ演算を繰り返すよりも良いでしょうか?

2
David M