पायथनमध्ये टर्नरी ऑपरेटर (कंडिशनल ऑपरेटर) नावाची लेखन शैली आहे जी एका ओळीत if स्टेटमेंट सारख्या प्रक्रियेचे वर्णन करू शकते.
नमुना कोडसह येथे खाली स्पष्ट केले आहे.
- टर्नरी ऑपरेटरचे मूलभूत लेखन
if ... elif ... else ...
याचे एका ओळीत वर्णन करा- सूची सर्वसमावेशक नोटेशन आणि टर्नरी ऑपरेटर एकत्र करणे
- निनावी फंक्शन्स (लॅम्बडा एक्सप्रेशन्स) आणि टर्नरी ऑपरेटर्सचे संयोजन
नॉर्मल इफ स्टेटमेंटबद्दल अधिक माहितीसाठी पुढील लेख पहा.
टर्नरी ऑपरेटरचे मूलभूत लेखन
Python मध्ये, ternary operator खालीलप्रमाणे लिहिता येईल
Expression evaluated when the conditional expression is true if conditional expression else Expression evaluated when the conditional expression is false
जर तुम्हाला परिस्थितीनुसार मूल्ये बदलायची असतील, तर प्रत्येक मूल्य जसे आहे तसे लिहा.
Value to return if conditional expression is true if conditional expression else Value to return if conditional expression is false
a = 1
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# odd
a = 2
result = 'even' if a % 2 == 0 else 'odd'
print(result)
# even
तुम्हाला अटींनुसार प्रक्रिया बदलायची असल्यास, प्रत्येक अभिव्यक्तीचे वर्णन करा.
a = 1
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 3
a = 2
result = a * 2 if a % 2 == 0 else a * 3
print(result)
# 4
मूल्य न देणारे अभिव्यक्ती (अभिव्यक्ती जे काहीही देत नाहीत) देखील स्वीकार्य आहेत. स्थितीनुसार, अभिव्यक्तींपैकी एकाचे मूल्यांकन केले जाते आणि प्रक्रिया अंमलात आणली जाते.
a = 1
print('even') if a % 2 == 0 else print('odd')
# odd
सामान्य इफ स्टेटमेंटसह लिहिलेल्या खालील कोडच्या समतुल्य.
a = 1
if a % 2 == 0:
print('even')
else:
print('odd')
# odd
तार्किक ऑपरेटर (आणि, किंवा, इ.) वापरून एकाधिक सशर्त अभिव्यक्ती देखील जोडल्या जाऊ शकतात.
a = -2
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# negative and even
a = -1
result = 'negative and even' if a < 0 and a % 2 == 0 else 'positive or odd'
print(result)
# positive or odd
if ... elif ... else ...एका ओळीचे वर्णन
if ... elif ... else ...
हे एका ओळीवर लिहिण्याची विशेष पद्धत नाही. तथापि, जेव्हा टर्नरी ऑपरेटरची सशर्त अभिव्यक्ती खोटी असते तेव्हा मूल्यमापन केलेल्या अभिव्यक्तीमध्ये दुसरा टर्नरी ऑपरेटर वापरून हे लक्षात येऊ शकते. नेस्टिंग टर्नरी ऑपरेटरची प्रतिमा.
तथापि, ते मोठ्या प्रमाणावर न वापरणे चांगले आहे कारण ते वाचनीयता कमी करते.
a = 2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# positive
a = 0
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# zero
a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative
खालील सशर्त अभिव्यक्तीचे खालील दोन प्रकारे अर्थ लावले जाऊ शकते, परंतु ते पूर्वीचे (1) मानले जाते.
A if condition 1 else B if condition 2 else C
1. A if condition 1 else ( B if condition 2 else C )
2. ( A if condition 1 else B ) if condition 2 else C
एक ठोस उदाहरण खालीलप्रमाणे आहे. पहिली अभिव्यक्ती दुसरी आहे असे मानले जाते.
a = -2
result = 'negative' if a < 0 else 'positive' if a > 0 else 'zero'
print(result)
# negative
result = 'negative' if a < 0 else ('positive' if a > 0 else 'zero')
print(result)
# negative
result = ('negative' if a < 0 else 'positive') if a > 0 else 'zero'
print(result)
# zero
सूची सर्वसमावेशक नोटेशन आणि टर्नरी ऑपरेटर एकत्र करणे
सूची आकलन नोटेशनमध्ये सूचीवर प्रक्रिया करताना टर्नरी ऑपरेटरचा उपयुक्त वापर आहे.
टर्नरी ऑपरेटर आणि सूची आकलन नोटेशन एकत्र करून, सूचीचे घटक बदलणे किंवा परिस्थितीनुसार काही इतर प्रक्रिया करणे शक्य आहे.
l = ['even' if i % 2 == 0 else i for i in range(10)]
print(l)
# ['even', 1, 'even', 3, 'even', 5, 'even', 7, 'even', 9]
l = [i * 10 if i % 2 == 0 else i for i in range(10)]
print(l)
# [0, 1, 20, 3, 40, 5, 60, 7, 80, 9]
सूची आकलन नोटेशनबद्दल अधिक माहितीसाठी, खालील लेख पहा.
- संबंधित:पायथन सूची आकलन कसे वापरावे
निनावी फंक्शन्स (लॅम्बडा एक्सप्रेशन्स) आणि टर्नरी ऑपरेटर्सचे संयोजन
टर्नरी ऑपरेटर, ज्याचे वर्णन अगदी निनावी फंक्शन (लॅम्बडा एक्सप्रेशन) मध्ये देखील केले जाऊ शकते, हे उपयुक्त आहे.
get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'
print(get_odd_even(1))
# odd
print(get_odd_even(2))
# even
लक्षात घ्या की, जरी टर्नरी ऑपरेटरशी संबंधित नसले तरी, वरील उदाहरण लॅम्बडा अभिव्यक्तीला एक नाव नियुक्त करते. त्यामुळे, पायथनचे कोडिंग कन्व्हेन्शन PEP8 सारखी स्वयंचलित तपासणी साधने एक चेतावणी निर्माण करू शकतात.
कारण PEP8 फंक्शन्सना नावे नियुक्त करताना def वापरण्याची शिफारस करते.
PEP8 ची संकल्पना खालीलप्रमाणे आहे
- कॉल करण्यायोग्य वस्तूंना वितर्क म्हणून पास करण्यासाठी लॅम्बडा अभिव्यक्ती वापरली जातात, उदाहरणार्थ, त्यांचे नाव न घेता
- लॅम्बडा अभिव्यक्तींमध्ये, नावाने परिभाषित करण्यासाठी def वापरा