अपने इच्छित व्यवहार प्राप्त करने के लिए from __future__ import division
का उपयोग करें। फिर, एक चुटकी में, आप की तरह
from __future__ import division
strings = ["0.1234", "1/2", "2/3"]
numbers = map(eval, strings)
अपने तार के बाहर तैरता की एक सूची प्राप्त करने के लिए कुछ कर सकते हैं। यदि आप इसे "दाएं" तरीके से करना चाहते हैं, तो eval()
का उपयोग न करें, बल्कि इसके बजाय एक स्ट्रिंग स्वीकार करें जो 0 स्ट्रिंग स्वीकार करता है और float()
पर कॉल करता है यदि इसमें कोई स्लैश नहीं है, या स्ट्रिंग को पार्स करता है और वहां संख्यात्मक और denominator को विभाजित करता है इसमें एक स्लैश
एक तरह से यह करने के लिए:
def parse_float_string(x)
parts = x.split('/', 1)
if len(parts) == 1:
return float(x)
elif len(parts) == 2:
return float(parts[0])/float(parts[1])
else:
raise ValueError
तो बस map(parse_float_string, strings)
आप अपनी सूची मिल जाएगा।
+1। इस मामले में eval पूरी तरह से अनावश्यक है, और मैं किसी के लिए खुश हूँ (मेरे अलावा, निश्चित रूप से) जो सही है के लिए अटक गया। –
Eval एक सुरक्षा जोखिम नहीं है जब तक कि आपके सहकर्मी दुर्भावनापूर्ण समाजोपैथ न हों। आपको इस मामले में इसकी आवश्यकता नहीं है, लेकिन यह ओपन सोर्स कोड की तुलना में सुरक्षा जोखिम नहीं है। –
बहुत अच्छा। स्ट्रिंग वास्तव में बाहर से है इसलिए मुझे सुरक्षित जाना है (और बुरी आदतों को नहीं सीखने की कोशिश करें)। मैं उम्मीद कर रहा था कि इसे पार्स करने की ज़रूरत नहीं है लेकिन यह बहुत बुरा नहीं है और एक आकर्षण की तरह काम करता है। – ketorin