SORU
8 EKİM 2008, ÇARŞAMBA


Azaltmak en büyük sorunu nedir()?

Değişiklikler hakkında net hararetli tartışma çok azaltma var() fonksiyonu python çıkarılmalıdır nasıl 3.0 ve. Küçük bir zorluk bu durumda neden anlamakta güçlük çekiyorum, bu oldukça makul durumlarda çeşitli kullanılabilir. Eğer hor sadece öznel olsaydı, ben de edemiyor insan, bu kadar çok sayıda umrunda olacağını hayal edin.

Neyi kaçırıyorum? Azaltmak en büyük sorunu nedir()?

CEVAP
8 EKİM 2008, ÇARŞAMBA


Olarak Guido The fate of reduce() in Python 3000 görevinden diyor ki:

Şimdi () azaltmak. Bu aslında her zaman nefret ettim çoğu, çünkü, bunun dışında size birkaç örnek içeren ya *, neredeyse her zaman görüyorum azaltmak() çağrısı ile önemsiz olmayan bir işlevi argüman, ihtiyacım var, tut kalem ve kağıt diyagram ne kızın aslında fed bu işlev önce anladığım azaltmak() yapmam gerekiyor. Azaltmak kadar aklımda, uygulanabilirliği() hemen hemen ilişkisel operatörler sınırlıdır, ve diğer tüm durumlarda daha iyi birikim döngü açıkça yazmak için.

Functional Programming HOWTO makale reduce bir kafa karıştırıcı mükemmel bir örnektir

Çabuk, aşağıdaki kodu ne işi var?

total = reduce(lambda a, b: (0, a[1]   b[1]), items)[1]

Sen bir yolunu bulursun, ama zaman anlamaya ifade dinlenmek alır neler oluyor. Kısa iç içe def deyimleri kullanarak işleri biraz daha iyi yapar:

def combine (a, b):
    return 0, a[1]   b[1]

total = reduce(combine, items)[1]

Ama eğer sadece döngü için kullanılmış olsaydı daha iyi olurdu:

total = 0
for a, b in items:
    total  = b

Veya sum() yerleşik ve jeneratör bir ifade:

total = sum(b for a,b in items)

Azaltmak çok kullanır() döngüler için yazılı olarak ne zaman net olur.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jason Parker

    Jason Parker

    14 Aralık 2009
  • Just So

    Just So

    3 HAZİRAN 2007
  • spederson7

    spederson7

    17 Temmuz 2006