map
ve filter
genellikle liste anlaşmaları ile değiştirilebilir, ancak reduce
map
ve filter
olarak kolayca değiştirilemez (ve bazı durumlarda, yine de işlevsel sözdizimini yine de tercih ederim). Argümanların kendileri üzerinde çalışmanız gerektiğinde, kendimi sözdizimsel jimnastikten geçiyor ve sonunda okunabilirliği sağlamak için tüm fonksiyonları yazmam gerekiyor.Bir işlemi doğrudan harita/küçültme/filtre içindeki argümanlara uygular mısınız?
Örnek birim testini basit tutmak için map
'u kullanacağım, ancak lütfen gerçek yaşam kullanım durumlarının liste kavraması olarak ifade edilmesinin zor olabileceğini unutmayın.
bu konuda gitmek için iki dağınık yollar bulduk, ama hiçbir şey şimdiye kadar aslında kullanmak.
[afunc(*i) for i in aniter] == map(afunc, *zip(*aniter))
[afunc(*i) for i in aniter] == map(lambda i: apply(afunc, i), aniter)
Bu ifadelerin sağ tarafını ifade etmenin pütürlü ve zarif bir yolu var mı?
Güzel, Itertools'u her zaman kullanırım, ama bir sebepten ötürü bu konuya bakmam benim başıma gelmemiştir. Mükemmel yemek tarifleri bağlantısı için – kojiro
+1! Bunu hiç fark etmedim – Kos