पाइथनको टर्नरी अपरेटर (सशर्त अपरेटर) सँग एक लाइनमा कथनहरू लेख्दै

व्यापार

पाइथनसँग टर्नरी अपरेटरहरू (सशर्त अपरेटरहरू) भनिने लेखन शैली छ जसले एकल लाइनमा if स्टेटमेन्ट जस्तै प्रक्रिया वर्णन गर्न सक्छ।

यहाँ नमूना कोड सहितको व्याख्या गरिएको छ।

  • टर्नरी अपरेटरहरूको आधारभूत लेखन
  • if ... elif ... else ...यसलाई एक लाइनमा वर्णन गर्नुहोस्
  • सूची व्यापक नोटेशन र टर्नरी अपरेटरहरू संयोजन गर्दै
  • बेनामी प्रकार्यहरूको संयोजन (lambda अभिव्यक्तिहरू) र टर्नरी अपरेटरहरू

सामान्य यदि कथन ’bout थप जानकारीको लागि निम्न लेख हेर्नुहोस्।

टर्नरी अपरेटरहरूको आधारभूत लेखन

पाइथनमा, टर्नरी अपरेटरलाई निम्नानुसार लेख्न सकिन्छ

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

सामान्य if कथन संग लेखिएको निम्न कोड को बराबर।

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 ...एकै पङ्क्तिमा यो लेख्ने कुनै विशेष तरिका छैन। जे होस्, यसलाई अर्को टर्नरी अपरेटर प्रयोग गरेर बुझाउन सकिन्छ जुन अभिव्यक्तिमा मूल्याङ्कन गरिन्छ जब टर्नरी अपरेटरको सशर्त अभिव्यक्ति गलत हुन्छ। नेस्टिङ टर्नरी अपरेटरहरूको छवि।

यद्यपि, यो व्यापक रूपमा प्रयोग नगर्नु राम्रो हुन सक्छ ’cause यसले पठनीयता कम गर्दछ।

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

निम्न सशर्त अभिव्यक्तिलाई निम्न दुई तरिकामा व्याख्या गर्न सकिन्छ, तर पूर्व (१) को रूपमा व्यवहार गरिन्छ।

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]

सूची बुझ्ने नोटेशनमा थप जानकारीको लागि, निम्न लेख हेर्नुहोस्।

बेनामी प्रकार्यहरूको संयोजन (lambda अभिव्यक्तिहरू) र टर्नरी अपरेटरहरू

टर्नरी अपरेटर, जुन एक बेनामी प्रकार्य (lambda अभिव्यक्ति) मा पनि संक्षिप्त रूपमा वर्णन गर्न सकिन्छ, उपयोगी छ।

get_odd_even = lambda x: 'even' if x % 2 == 0 else 'odd'

print(get_odd_even(1))
# odd

print(get_odd_even(2))
# even

याद गर्नुहोस्, यद्यपि ternary अपरेटरसँग सम्बन्धित छैन, माथिको उदाहरणले lambda अभिव्यक्तिलाई नाम प्रदान गर्दछ। त्यसैले, स्वचालित जाँच उपकरणहरू जस्तै पाइथनको कोडिङ कन्भेन्सन PEP8 ले चेतावनी उत्पन्न गर्न सक्छ।

यो ’cause PEP8 ले प्रकार्यहरूमा नामहरू तोक्दा def को प्रयोग गर्न सिफारिस गर्दछ।

PEP8 को अवधारणा निम्नानुसार छ

  • Lambda अभिव्यक्तिहरू तर्कको रूपमा कल गर्न मिल्ने वस्तुहरू पास गर्न प्रयोग गरिन्छ, उदाहरणका लागि, तिनीहरूलाई नाम नदिई
  • Lambda अभिव्यक्तिहरूमा, नामद्वारा परिभाषित गर्न def प्रयोग गर्नुहोस्
Copied title and URL