2011-12-27 18 views
15

यदि संग्रह में सभी तत्व किसी शर्त को पूरा करते हैं तो परीक्षण करने के लिए बेवकूफ पायथन तरीका क्या है? (.NET All() method सी # में अच्छी तरह से इस आला भरता है।)LINQ सभी फ़ंक्शन LINQ समकक्ष?

स्पष्ट पाश विधि नहीं है:

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

और एक सूची समझ चाल कर सकता है, लेकिन बेकार लगता है:

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

वहाँ मिला है कुछ और सुरुचिपूर्ण होने के लिए ... मुझे क्या याद आ रही है?

+0

देखें है भी http://stackoverflow.com/questions/8641008/compare-multiple-variables-to-the-same-value-in-if-in-python –

उत्तर

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

यह शॉर्ट सर्किट और सामान की सूची की आवश्यकता नहीं है - कुछ भी काम करने योग्य काम करेगा - इसलिए कई अच्छी सुविधाएं हैं।

भी अनुरूप

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

हा! इतना स्पष्ट! अच्छा दुख मुझे अब मूर्खतापूर्ण लगता है ... – Cameron

+0

निश्चित रूप से जिस तरह से मैं जाऊंगा। हालांकि, पाइथन में 'सभी' 'संख्यात्मक। सभी 'से अलग है जिसमें यह सीधे भविष्यवाणी नहीं करता है। (तो यह 'संख्यात्मक' के समान है। कहां (predicate)। सभी() '।) –