यदि किसी सूची के किसी तत्व के लिए कोई शर्त है, तो जाँच का पाइथोनिक तरीका


110

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

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

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

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

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

मुझे यह अटूट लगता है। क्या पायथन में ऐसा करने का एक बेहतर तरीका है?

जवाबों:


186

कोई भी () :

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

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

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

1
सुधार: यदि आप इसके बजाय उपयोग True in ..., पुनर्विचार और उपयोग करने जा रहे हैं any
अरन-फे


10

पायथन में इस उद्देश्य के लिए किसी भी () फ़ंक्शन में बनाया गया है ।


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

1
एक जटिल इफिल्टर बात के बजाय, बस करो: किसी भी (यह) को परिभाषित करें: इसमें el के लिए: यदि el: return True; वापसी झूठी
रोरी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.