लिस्ट कॉम्प्रिहेंशन्स काफी उपयोगी हैं, लेकिन Python में एकल पंक्ति में if-else कंडीशन्स को संभालने के लिए एक और शानदार सिंटैक्स उपलब्ध है। कल्पना करें कि आप स्कोर 50 या उससे अधिक होने पर Excellent और 50 से कम होने पर Average परिणाम असाइन करना चाहते हैं। यह एक ही लाइन में किया जा सकता है:
if score >= 50:
result = 'Excellent'
else:
result = 'Average'
result = 'Excellent' if score >= 50 else 'Average'
सिंगल-लाइन कंडीशन्स लिस्ट कॉम्प्रिहेंशन्स में विशेष रूप से उपयोगी होती हैं। ये शर्तों के आधार पर लिस्ट के एलिमेंट्स को जनरेट करने के लिए उपयोग की जा सकती हैं - एक स्थिति में एक मान और दूसरी में दूसरा मान। वही स्कोरिंग प्रोग्राम लिस्ट कॉम्प्रिहेंशन में इस प्रकार किया जा सकता है:
scores = [...]
results = ['Excellent' if s >= 50 else 'Average' for s in scores]
print(results)
results का प्रत्येक एलिमेंट s के मान के आधार पर Excellent या Average होगा।
ध्यान दें कि यह लिस्ट कॉम्प्रिहेंशन में फिल्टरिंग से भिन्न है। फिल्टरिंग के लिए, if कंडीशन for लूप के बाद आता है। यहाँ if और else स्टेटमेंट जनरेट किए जाने वाले एलिमेंट के भाग में आते हैं।
चुनौती
एक लाइन में परीक्षा के स्कोर्स दिए गए हैं, आपको यह बताना है कि छात्र ने परीक्षा पास की है या फेल। सभी स्कोर्स स्पेस द्वारा अलग किए गए हैं। यदि छात्र का स्कोर 40 से कम है तो वे फेल हैं, अन्यथा पास।
इनपुट में स्पेस से अलग किए गए स्कोर्स की एक लाइन है।
प्रोग्राम को एक लाइन प्रिंट करनी चाहिए जहाँ प्रत्येक छात्र के लिए यदि वे फेल हुए हैं तो FAIL और पास हुए हैं तो PASS प्रिंट करना है।
पूरा प्रोग्राम एक ही लाइन में लिखने की कोशिश करें।