2011-12-27 12 views
15

Koleksiyondaki tüm öğelerin bir koşulu karşılayıp karşılamadığını sınamak için deyimsel Python yöntemi nedir?LINQ Python eşdeğeri Tüm işlev?

bariz döngü yöntemi var (. .NET All() method C# güzel bu boşluğu doldurmaktadır):

all_match = True 
for x in stuff: 
    if not test(x): 
     all_match = False 
     break 

Ve işe yarayacak bir liste anlama, ama savurgan görünüyor:

all_match = len([ False for x in stuff if not test(x) ]) > 0 

Orada var Daha zarif bir şey olmak için ... Neyi özlüyorum?

+0

bakınız var da http://stackoverflow.com/questions/8641008/compare-multiple-variables-to-the-same-value-in-if-in-python –

cevap

25
all_match = all(test(x) for x in stuff) 

kısa devre ve bir liste olmaya şeyler gerektirmez Bu - iterable çalışacak şey - yani birkaç güzel özelliklere sahiptir.

da benzer

any_match = any(test(x) for x in stuff) 
+2

Hah! Çok açık! İyi keder şimdi aptalca hissediyorum ... – Cameron

+0

Kesinlikle gidiyorum. Bununla birlikte, Python'da '' '' Enumerable.All'den farklıdır, çünkü doğrudan bir yüklem yapmaz. (Yani daha 'Enumerable.Where (predicate) .All() '. –