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ğinlist(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 zormap()
fonksiyon ve yan etkiler için çağrılan; doğru dönüşümfor
düzenli bir döngü bir listesini oluşturmak sadece gereksiz olacağından () kullanmaktır.- [...]
- [...]
- Kaldırıldı
reduce()
. Eğer gerçekten ihtiyacınız varsafunctools.reduce()
kullanın; ancak, yüzde 99 kezfor
açık bir döngü daha okunabilir olur.- [...]
Bunu Paylaş:
Nasıl python harita ve diğer işlevsel ...
Nasıl azaltmak'bellek kullanımı s...
Nasıl Python ile şimdiki zaman almak i...
Nasıl klon ya da Python içinde bir lis...
Nasıl dize Python küçük harfe dönüştür...