SORU
30 Kasım 2012, Cuma


Nasıl Filtre, Harita kullanımı ve Python 3.3.0 Azaltmak için

Filtre, harita ve azaltmak tamamen Python 2.7.3 çalışın. İşte bir örnek:

>>> def f(x): return x % 2 != 0 and x % 3 != 0

>>> filter(f, range(2, 25))

[5, 7, 11, 13, 17, 19, 23]
>>> def cube(x): return x*x*x

>>> map(cube, range(1, 11))
[1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
>>> def add(x,y): return x y

>>> reduce(add, range(1, 11))
55

Ama Python 3.3.0 aşağıdaki çıktıları alıyorum:

>>> def f(x): return x % 2 != 0 and x % 3 != 0

>>> filter(f, range(2, 25))
<filter object at 0x0000000002C14908>
>>> def cube(x): return x*x*x

>>> map(cube, range(1, 11))
<map object at 0x0000000002C82B70>
>>> def add(x,y): return x y

>>> reduce(add, range(1, 11))
Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    reduce(add, range(1, 11))
NameError: name 'reduce' is not defined

Eğer biri bunun nedenini bana açıklayabilir sevinirim.

Daha fazla açıklık için bir kod ekran görüntüsü: http://i.imgur.com/WekeD.png

CEVAP
30 Kasım 2012, Cuma


What's New In Python 3.0 değişiklikler hakkında bilgi edinebilirsiniz. 2 taşıdığınızda iyice okumalısın.3 x.x'den beri çok şey değişti.

Bütün cevap burada belgeleri teklif.

Views And Iterators Instead Of Lists

Tanınmış API artık dönüş bazı listeler:

  • [...]
  • map() filter() dönüş kullanımına. Eğer gerçekten ihtiyacınız olan bir liste, bir hızlı bir düzeltme, örneğin list(map(...)) ama daha iyi bir düzeltme olduğunu sık sık kullanın bir liste üreteci (özellikle orijinal kodu kullanır lambda), veya yeniden yazma kodu bu değil ihtiyaç listesi. Özellikle zor map() fonksiyon ve yan etkiler için çağrılan; doğru dönüşüm for düzenli bir döngü bir listesini oluşturmak sadece gereksiz olacağından () kullanmaktır.
  • [...]

Builtins

  • [...]
  • Kaldırıldı reduce(). Eğer gerçekten ihtiyacınız varsa functools.reduce() kullanın; ancak, yüzde 99 kez for açık bir döngü daha okunabilir olur.
  • [...]

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • Crossover

    Crossover

    18 HAZİRAN 2007