NameError: nama 'mengurangi' tidak didefinisikan dalam Python


187

Saya menggunakan Python 3.2. Mencoba ini:

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

Dan mendapat kesalahan berikut:

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

Mencoba mencetak reduceke konsol interaktif - mendapat kesalahan ini:

NameError: name 'reduce' is not defined


Apakah reducebenar-benar dihapus dengan Python 3.2? Jika itu masalahnya, apa alternatifnya?


3
@ Janernardo, apa alat yang tepat?
Sergey

Jawaban:



195

Anda dapat menambahkan

from functools import reduce

sebelum Anda menggunakan mengurangi.


3
Pengguna sebelumnya telah menjawab pertanyaan dan jawabannya sama dengan jawabannya
Kathiravan Natarajan

8

Atau jika Anda menggunakan enam perpustakaan

from six.moves import reduce

3

Dalam hal ini saya percaya bahwa yang berikut ini setara:

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

Satu-satunya masalah dengan ini adalah ia menciptakan angka besar, tetapi mungkin itu lebih baik daripada operasi modulo berulang?


Operasi modulo berulang berguna ketika membantu menjaga angka tetap kecil. Menjumlahkan angka tidak akan membuat angka besar kecuali jika Anda menjumlahkan BANYAK angka, jadi dalam kasus ini tidak akan membantu. Terutama karena tidak melakukan hal itu memungkinkan penggunaan fungsi penjumlahan
bawaan
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.