2009-08-27 14 views
67

मेरे पास पाइथन में एक सूची है, और मैं यह जांचना चाहता हूं कि कोई तत्व नकारात्मक है या नहीं। Specman जो करता सूचियों के लिए has() विधि है:किसी स्थिति के किसी भी तत्व के लिए स्थिति रखने के लिए पाइथोनिक तरीका

x: list of uint; 
if (x.has(it < 0)) { 
    // do something 
}; 

कहाँ it एक Specman कीवर्ड बदले में सूची के प्रत्येक तत्व को मैप किया है।

मुझे यह बल्कि सुरुचिपूर्ण लगता है। मैंने Python documentation देखा और कुछ भी समान नहीं मिला। सबसे अच्छा मैं साथ आ सकता था:

if (True in [t < 0 for t in x]): 
    # do something 

मुझे यह बल्कि सुरुचिपूर्ण लगता है। क्या Python में ऐसा करने का कोई बेहतर तरीका है?

उत्तर

118

any():

if any(t < 0 for t in x): 
    # do something 

इसके अलावा, आप, उपयोग करने के लिए "में ... यह सच है" यह एक जनरेटर अभिव्यक्ति कर तो यह हे नहीं ले करता जा रहे हैं (एन) स्मृति:

if True in (t < 0 for t in x): 
22

any() का उपयोग करें।

if any(t < 0 for t in x): 
    # do something 
9

अजगर एक बिल्कुल इस उद्देश्य के लिए any() समारोह में बनाया गया है।

+0

केवल 2.5+। अन्यथा आपको एक फ़ंक्शन बनाना होगा, शायद ifilter और अपवादों का उपयोग करना, या बूल (सेट ((x के लिए x के लिए x)) या जैसा। –

+1

एक जटिल ifilter चीज़ की बजाय, बस करें: किसी भी (इसे) def: इसमें एल के लिए: यदि एल: सच वापसी; विवरण झूठा है – Rory

संबंधित मुद्दे