अन्य उत्तर राज्य के रूप में, इस के लिए अजगर का संस्करण है:
i if i < x else x
(इस विशिष्ट उदाहरण के लिए निश्चित रूप से, एक min(i, x)
लेखन, पसंद करेंगे के रूप में यह आंखों पर आसान है)
हालांकि, यह अभिव्यक्ति वाक्यविन्यास सिर्फ पायथन 2 पर उपलब्ध कराया गया था।5 (मुझे लगता है कि यह लगभग 2004 था)। इससे पहले, निम्नलिखित मुहावरे का उपयोग किया गया था - लेकिन देखभाल की जानी चाहिए, क्योंकि यह त्रुटि प्रवण है:
i < x and i or x
- क्योंकि तार्किक ऑपरेटर "और" वास्तव में इसकी श्रृंखला पर अंतिम वास्तविक मूल्य का मूल्यांकन करता है - इसलिए, अगर अभिव्यक्ति सच था, i < x and i
i
का मूल्यांकन करता है - और or
ऑपरेटर श्रृंखला पर पहले वास्तविक मूल्य का मूल्यांकन करता है। इस मामले पर, यदि i < x
गलत होगा, तो i< x and i
होगा और पहला वास्तविक मान x
होगा।
यह देखना आसान है कि इस निर्माण में त्रुटि कितनी त्रुटि थी, क्योंकि i
का बूलियन मान गलत होगा (उदाहरण के लिए यदि मैं == 0), तो यह x वापस लौटाएगा, भले ही i < x
सत्य हो।
मैं अपने आप को, उन दिनों में वापस, इस संरचना के बजाय लिखने के लिए प्रयोग किया है:
(एक्स, मैं) [मैं < x]
अभिव्यक्ति "मैं < एक्स" हा "का एक संख्यात्मक मूल्य 1 "(सत्य) या" 0 "(झूठा) और मैंने इस प्रक्षेपण का उपयोग पिछले टुपल को इंडेक्स के रूप में करने के लिए किया था। इस दृष्टिकोण के साथ समस्या यह थी कि यह हमेशा ट्यूपल पर दोनों अभिव्यक्तियों का मूल्यांकन करेगा, भले ही वह उस पर से किसी एक का उपयोग करेगा (यदि अभिव्यक्ति कहां काम करती है तो यह महंगी हो सकती है, या यहां तक कि विरोधाभासी भी हो सकती है)
मुझे लगता है कि इसे पेश किया गया था 2.7 से पहले (क्या यह 2.5 था?)। यह 2.6 में निश्चित रूप से काम करता है लेकिन यह 2.4 में काम नहीं करता है। किसी भी तरह, +1। –
आप सही हैं - वह 2.5 संस्करण था। सुधार के लिए धन्यवाद। – real4x