NameError: Python'da 'reduce' adı tanımlanmadı


187

Python 3.2 kullanıyorum. Bunu denedim:

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

Ve aşağıdaki hatayı aldım:

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

reduceEtkileşimli konsola yazdırmayı denedim - şu hatayı aldı:

NameError: name 'reduce' is not defined


reducePython 3.2'de gerçekten kaldırıldı mı ? Eğer durum buysa, alternatif nedir?


3
@JBernardo, doğru araç nedir?
Sergey

Yanıtlar:




8

Veya altı kütüphaneyi kullanıyorsanız

from six.moves import reduce

3

Bu durumda aşağıdakilerin eşdeğer olduğuna inanıyorum:

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

Bununla ilgili tek sorun, büyük sayılar oluşturmasıdır, ancak belki de tekrarlanan modulo işlemlerinden daha iyidir?


Tekrarlanan modulo işlemleri, sayıları küçük tutmaya yardımcı olduğunda faydalıdır. Çok sayıda sayı toplamadığınız sürece sayıları toplamak büyük sayılar oluşturmaz, bu durumda yardımcı olmaz. Özellikle bunu yapmadığından, kullanıcı tanımlı bir fonksiyonun tekrarlanan uygulamasından çok daha hızlı çalışacak olan dahili toplam fonksiyonunun kullanımına izin verir
HackerBoss
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.