exponentials के एक conditional inside a list comprehension
>>> s = ['1', '2', '3.4', '5.6', '7.8']
>>> [float(i) if '.' in i else int(i) for i in s]
[1, 2, 3.4, 5.6, 7.8]
दिलचस्प बढ़त मामले का प्रयोग करें। आप सशर्त पर जोड़ सकते हैं।
>>> s = ['1', '2', '3.4', '5.6', '7.8' , '1e2']
>>> [float(i) if '.' in i or 'e' in i else int(i) for i in s]
[1, 2, 3.4, 5.6, 7.8, 100.0]
isdigit
का उपयोग सबसे अच्छा है, क्योंकि यह (एक comment में Steven ने उल्लेख किया) सभी किनारे मामलों का ख्याल रखता है
>>> s = ['1', '2', '3.4', '5.6', '7.8']
>>> [int(i) if i.isdigit() else float(i) for i in s]
[1, 2, 3.4, 5.6, 7.8, 100.0]
स्रोत
2015-10-14 16:06:38
'int (" 1e2 ")' –
की वजह से विभिन्न सशर्त कांग्रेस मा की चिंता को संबोधित करेंगे: 'int (i) अगर i.isdigit() और फ्लोट (i)' –
@ कॉंगमा: हालांकि यह सच है कि यह असफल हो जाएगा 'int (" 1e2 ") के साथ, मुझे नहीं लगता कि यह डाउनवोट योग्य है। कॉल करने के लायक होने पर मुझे लगता है कि यह समस्या विनिर्देश के बाहर है। –