मैं पाइथन में निम्नलिखित कैसे कर सकता हूं?यदि पाइथन की सूची समझ में/अन्यथा?
row = [unicode(x.strip()) for x in row if x is not None else '']
मूलतः
:
- रिक्त स्ट्रिंग के साथ सभी Nones की जगह है, और फिर
- एक समारोह बाहर ले जाने के।
मैं पाइथन में निम्नलिखित कैसे कर सकता हूं?यदि पाइथन की सूची समझ में/अन्यथा?
row = [unicode(x.strip()) for x in row if x is not None else '']
मूलतः
:
आप पूरी तरह से है कि, यह सिर्फ एक आदेश मुद्दा है कर सकते हैं:,
[ unicode(x.strip()) if x is not None else '' for x in row ]
ध्यान दें कि यह वास्तव में एक अलग भाषा संरचना का भी उपयोग, एक conditional expression, जो अपने आप comprehension syntax का हिस्सा नहीं है, जबकि if
for…in
के बाद सूची की समझ का हिस्सा है और फ़िल्टर स्रोत स्रोत से तत्वों का उपयोग किया जाता है।
सशर्त अभिव्यक्तियों का उपयोग उन सभी स्थितियों में किया जा सकता है जहां आप कुछ स्थितियों के आधार पर दो अभिव्यक्ति मानों के बीच चयन करना चाहते हैं। यह ternary operator ?:
that exists in other languages जैसा ही है।
value = 123
print(value, 'is', 'even' if value % 2 == 0 else 'odd')
ध्यान दें कि यदि/else यहां अब "टर्नरी ऑपरेटर" वाक्यविन्यास है और समझदारी सिंटैक्स सूचीबद्ध नहीं है। –
ओपी के पिछले प्रश्न को देखते हुए, @ एडम की टिप्पणी बहुत महत्वपूर्ण है! – delnan
यही कारण है कि मैं टर्नरी ऑपरेटर को ब्रैकेट में रखना पसंद करता हूं, यह स्पष्ट करता है कि यह एक सामान्य अभिव्यक्ति है, समझ नहीं है। –
एक ही रास्ता:
def change(f):
if f is None:
return unicode(f.strip())
else:
return ''
row = [change(x) for x in row]
तो यद्यपि आप है: उदाहरण के लिए
row = map(change, row)
या आप एक लैम्ब्डा इनलाइन उपयोग कर सकते हैं।
>>> print(", ".join(["ha" if i else "Ha" for i in range(3)]) + "!")
Ha, ha, ha!
यह तथ्य यह है कि if i
0
के लिए और समारोह range()
द्वारा उत्पन्न अन्य सभी मूल्यों के लिए True
को False
का मूल्यांकन कारनामे:
यह भी एक अच्छा (शायद केवल) तकनीक का उपयोग करने के लिए उपयोग किया जाता है जब आपको 'if' अभिव्यक्ति या कोड या उसके अन्य कथन ब्लॉक से संभावित अपवादों को संभालना होता है। स्वीकृत उत्तर सरल मामलों के लिए बेहतर है। – martineau
सूची समझ में इसका उपयोग करने से पढ़ने के लिए यह बहुत आसान है। –
यहाँ एक और उदाहरण उदाहरण है। इसलिए सूची समझ इस प्रकार का मूल्यांकन करता है:
>>> ["ha" if i else "Ha" for i in range(3)]
['Ha', 'ha', 'ha']
की [? यह संभव एक अजगर सूची समझ में 'शेष' का उपयोग करने है]
संभव डुप्लिकेट (http://stackoverflow.com/questions/2951701/is-it- संभव-से-उपयोग-में-एक-अजगर-सूची-समझ) –