मैं वास्तव में सोच रहा हूं, जब इस प्रकार की स्थिति की बात आती है, तो ऐसा करने का पाइथोनिक तरीका क्या है? if else टर्नरी या or का उपयोग करना:

true_list = []
for x, y in a_list: # x, y could be any truthy or falsy value
  true_list.append(x or y)
  true_list.append(x if x else y)

संपादित करें: मैंने शब्दार्थ को अनदेखा करने के लिए प्रश्न को अपडेट किया, मैं ज्यादातर सोच रहा था कि कौन सी अभिव्यक्ति अधिक पाइथोनिक है।

1
theGirrafish 17 जुलाई 2019, 17:38

2 जवाब

सबसे बढ़िया उत्तर

यह वह स्थिति है जिसके लिए सशर्त ऑपरेटर को पेश किया गया; इसका इस्तेमाल करें।

string += x if x else y  # Or ... if x is not None ... if the distinction is necessary

सामान्य तौर पर, or का उपयोग तब करें जब आप केवल "वास्तविक" मूल्य की परवाह किए बिना, अभिव्यक्ति की सच्चाई की परवाह करते हैं, जिसकी सच्चाई विचाराधीन है।

सशर्त अभिव्यक्ति पेश की गई थी क्योंकि कई लोगों ने कोड लिखने की कोशिश की जैसे

<condition> and x or y

लेकिन यह सूक्ष्म रूप से गलत है: यदि शर्त सत्य है तो अभिव्यक्ति के बराबर x करने का इरादा है, लेकिन यह वास्तव में केवल x के बराबर है यदि दोनों स्थिति और x सच हैं।

3
chepner 17 जुलाई 2019, 14:53

उस स्थिति में जहां x और y दोनों None हो सकते हैं, आप अधिक क्रिया कर सकते हैं:

>>> string = ""
>>> x, y = (None, None)
>>> string += x if x else y if y else '' # Fallback to empty string
>>> string
''
1
Nathan McCoy 17 जुलाई 2019, 14:46