2013-01-22 18 views
54

संभव डुप्लिकेट:
Ternary conditional operator in Pythonअजगर अगर-किसी और शॉर्ट हाथ

मैं अजगर में निम्न कार्य करने के:

while(i < someW && j < someX){ 
    int x = A[i] > B[j]? A[i++]:B[j++]; 
    .... 
} 

जाहिर है, जब या तो i या j एक सीमा हिट करता है, कोड लूप से बाहर हो जाएगा। मुझे लूप के बाहर i और j के मानों की आवश्यकता है।

मैं वास्तव में

x=0 
... 
if A[i] > B[j]: 
    x = A[i] 
    i+=1 
else: 
    x = B[j] 
    j+=1 

करना चाहिए या किसी को भी एक छोटी रास्ते से पता है?

>>> a,b=5,7 
>>> x = a > b and 10 or 11 
>>> print x 
11 
+0

@MartijnPieters: दूसरा भाग निश्चित रूप से एक डुप्लिकेट है, लेकिन मुझे पहले के बारे में निश्चित नहीं है। – DSM

+0

@DSM: ठीक है, ओपी द्वारा अधिक पाइथनिक संरचनाओं और लूपों की खोज के बाद पहले भाग की आवश्यकता नहीं होगी .. क्या आप इसे इटरेटर्स में पूर्ण परिचय देने और लिखने जा रहे हैं? –

+0

@DSM: मैं उस भाग को संबोधित करने के नीचे किसी को भी नहीं देखता हूं। ;-) –

उत्तर

8

को कुछ इसी तरह का समर्थन करने के प्राप्त कर सकते हैं पठनीय तरीका

01 है

लेकिन आप and और or का भी उपयोग कर सकते हैं:

x = a > b and 10 or 11 

"अजगर के ज़ेन" का कहना है कि "पठनीयता मायने रखता है", हालांकि, तो सबसे पहले उन्हीं के लिए जाते हैं।

इसके अलावा, यदि आप 10 के बजाय एक चर डालते हैं तो यह और ट्रिक विफल हो जाएगा और यह False का मूल्यांकन करता है।

हालांकि, अगर काम की तुलना में अधिक इस हालत पर निर्भर करता है, यह अधिक यह लिखने के लिए आपके पास के रूप में पढ़ा जा सके:

if A[i] > B[j]: 
    x = A[i] 
    i += 1 
else: 
    x = A[j] 
    j += 1 

जब तक आप एक कंटेनर में i और j डाल दिया। लेकिन अगर आप हमें दिखाते हैं कि आपको इसकी आवश्यकता क्यों है, तो यह अच्छी तरह से हो सकता है कि आप नहीं करते हैं।

+12

'10 अगर ए> बी अन्य 11'। बुलियन ऑपरेटर का सहारा लेने की कोई ज़रूरत नहीं है। –

+0

@MartijnPieters: अच्छा बिंदु, महोदय। :) – DonCallisto

+0

धन्यवाद। यह मेरे प्रश्न के दूसरे भाग के लिए काम करता है। वोट ऊपर! – learner

132

सबसे:

x = a > b and 10 or 11 

यह निष्पादन का एक नमूना है:

उपरोक्त के अलावा, मैं अजगर की कोशिश करो इस

a,b=5,7 
x = a > b ? 10 : 11 
+4

पायथन 2.5 –

+0

धन्यवाद में जोड़ा गया। यह मेरे प्रश्न के दूसरे भाग के लिए काम करता है। वोट ऊपर! – learner

+0

मैंने यह दिखाने के लिए संपादित किया है कि मुझे थोड़ी देर के दौरान 'j' और' i' की आवश्यकता है। – learner