2011-12-27 13 views
23

मैं पायथन का उपयोग कर रहा हूं और मैं इसमें कई चर के साथ एक कथन कथन करना चाहता हूं।पाइथन में "if" में एक ही मान के लिए एकाधिक चर की तुलना करें?

जैसे:

if A, B, C, and D >= 2: 
     print (A, B, C, and D) 

मुझे लगता है कि यह सही सिंटैक्स नहीं है और कहा कि वास्तव में सवाल मैं पूछ रहा हूँ है - क्या एक अगर बयान के इस प्रकार के लिए सही अजगर वाक्य रचना है? धन्यवाद!

+0

भी http://stackoverflow.com/questions/8641089/python-equivalent-of-linq-all-function –

उत्तर

41

लिखते हैं क्या इस बारे में:

if all(x >= 2 for x in (A, B, C, D)): 
    print A, B, C, D 

यह आपको एक लंबे साथ चर की सूची का परीक्षण कर रहे हैं उपयोगी होना चाहिए एक ही शर्त

+0

हां मैं आपके उत्तर की तरफ झुकता हूं क्योंकि मेरे पास चर की काफी लंबी सूची है। धन्यवाद! – chingchong

+0

जो मैं पूरी तरह से समझ नहीं पा रहा हूं वह है कि एक तरफ 2 कोष्ठक क्यों हैं और तीन एक दूसरे पर हैं। क्या हर तरफ सिर्फ 1 नहीं होना चाहिए? – chingchong

+3

एक आखिरी टिप्पणी: ब्रांड्स की एक अनावश्यक जोड़ी है, आप बस लिख सकते हैं: 'सभी (एक्स> = 2 एक्स में एक्स (ए, बी, सी, डी)) ' –

1

कैसे के बारे में: - जब तक आप एक में चर डाल करने को तैयार हैं

if A >= 2 and B >= 2 and C >= 2 and D >= 2: 
    print A, B, C, D 

सामान्य मामले के लिए, वहाँ नहीं यह दर्शाता है कि एक ही स्थिति सभी चर के लिए सच होना चाहिए के लिए एक छोटा रास्ता है सूची, इसके लिए कुछ अन्य उत्तरों पर एक नज़र डालें।

+0

धन्यवाद देखो! मेरे पास 10 चर हैं जो कम टाइपिंग लेते हैं? – chingchong

+0

यदि आपको एक ही स्थिति (> = 2) का परीक्षण करने की आवश्यकता है और सभी चर संख्याएं हैं, तो @ फ्रेड लार्सन का जवाब सबसे छोटा समाधान है (हालांकि एक नज़र में समझने में थोड़ा मुश्किल है) –

+0

यदि मुझे अन्य स्थितियों की आवश्यकता है तो डीएसएम द्वारा प्रदान किया गया जवाब सबसे अच्छा है? – chingchong

1

सिवाय कि वह शायद इस के लिए पूछ रहा है:

if A >= 2 and B >= 2 and C >= 2 and D >= 2: 
+2

अंतर क्या है? ... – Cameron

+0

क्या अंतर है? – chingchong

16

एक और विचार:

if min(A, B, C, D) >= 2: 
    print A, B, C, D 
+3

एक नज़र में समझने में इतना आसान नहीं है। –

+1

यह इस विशेष मामले के लिए काम करता है, लेकिन सामान्य रूप से, आप एक ही स्थिति की तुलना एक ही स्थिति की तुलना नहीं कर सकते हैं –

+0

न्यूनतम मतलब क्या है? – chingchong

1

आप क्या हासिल करने की कोशिश कर रहे हैं पर निर्भर करता है, एक समारोह काम कर सकते हैं करने के लिए एक सूची से गुजर रहा।

def foo(lst): 
    for i in lst: 
     if i < 2: 
      return 
    print lst 
+0

ओह! मैंने अभी वही जवाब आपके जैसा पोस्ट कर दिया है। एलओएल –

+0

यदि आप समझा सकते हैं कि यह अधिक विस्तार से क्या कर रहा है तो मैं वास्तव में मेरी मदद करूंगा। धन्यवाद! – chingchong

+0

आप फ़ंक्शन को संख्याओं की एक सूची पास करते हैं। सूची में प्रत्येक आइटम के लिए, यह देखने के लिए जांचें कि क्या आइटम 2 से कम है - यदि आइटम 2 से कम है, तो फ़ंक्शन कुछ भी प्रिंट किए बिना "रिटर्न" (या बाहर निकलता है)। सूची में प्रत्येक आइटम की जांच जारी रखें। एक बार प्रत्येक आइटम की जांच हो जाने के बाद, और कोई आइटम फ़ंक्शन को वापस/बाहर निकलने का कारण नहीं बनता है, हम जानते हैं कि सभी आइटम> = 2 हैं, इसलिए हम सूची प्रिंट कर सकते हैं। – Phil

6

मैं शायद इस रूप में

v = A, B, C, D 
if all(i >= 2 for i in v): 
    print v 
+0

धन्यवाद! आप जो कह रहे हैं उसका अर्थ स्पष्ट करने के लिए ... यदि मेरे पास ए, बी, सी, और डी था। क्या मैं बस वी = ए, बी, सी, डी (रिटर्न - काम करने के लिए कोड टैग नहीं प्राप्त कर सकता) यदि सभी (v> = 2): (वापसी) प्रिंट (v)? – chingchong

+1

@TerriMoore: नहीं, क्योंकि यह पूछेगा कि क्या टुपल (ए, बी, सी, डी) 2 से अधिक या बराबर था, न कि सभी मान हैं> = 2. तकनीकी कारणों से जो वास्तव में नहीं उठाएंगे पायथन 2 में एक अपवाद, यह केवल अप्रत्याशित परिणाम देगा, लेकिन यह पाइथन 3 में एक त्रुटि (जैसा चाहिए) बढ़ाएगा। – DSM

+0

मैं अजगर का उपयोग कर रहा हूं 3. "आई इन वी" चीज़ वास्तव में क्या देखेगी? – chingchong

3

यदि आपके पास दस चर हैं जो आप इस तरह के समूह के रूप में व्यवहार कर रहे हैं, तो संभवतः आप उन्हें किसी सूची के तत्व, या किसी ऑब्जेक्ट के गुणों या तत्वों के तत्व बनाना चाहते हैं। उदाहरण के लिए:

my_dict = {'A': 1, 'B': 2, 'C': 3 } 

if all(x > 2 for x in my_dict.values()): 
    print "They're all more than two!" 
+0

ऐसा नहीं है जो मैं यहां हासिल करने की कोशिश कर रहा हूं। लेकिन वैसे भी धन्यवाद! – chingchong

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