2009-10-23 15 views
128

मेरे पास एक स्क्रिप्ट है जो एक टेक्स्ट फ़ाइल पढ़ती है, स्ट्रिंग के रूप में दशमलव संख्या खींचती है और उन्हें एक सूची में रखती है।पायथन में, मैं सूची में सभी वस्तुओं को फ़्लोट करने के लिए कैसे परिवर्तित करूं?

[ '0.49', '0.54', '0.54', '0.54', '0.54', '0.54', '0.55', '0.54', ':

तो मैं इस सूची है 0.54 ',' 0.54 ',' 0.55 ',' 0.55 ',' 0.55 ',' 0.54 ',' 0.55 ',' 0.55 ',' 0.54 ',' 0.55 ',' 0.55 ',' 0.54 ']

मैं सूची में प्रत्येक मान को स्ट्रिंग से फ़्लोट में कैसे परिवर्तित करूं?

मैं कोशिश की है:

for item in list: 
    float(item) 

लेकिन यह मेरे लिए काम करने के लिए प्रतीत नहीं होता।

+31

एक चर नाम के रूप में सूची का उपयोग न करें। –

उत्तर

248
[float(i) for i in lst] 

सटीक होना करने के लिए, यह नाव मूल्यों के साथ एक नई सूची बनाता है। map दृष्टिकोण के विपरीत यह py3k में काम करेगा।

+0

मेरे पास एक ही समस्या थी, और अनसुलझा: ff1 = ['0.49', '0.54', '0.54', '0.54', '0.54', '0.54', '0.55', '0.54', '0.54', '0.54', '0.55', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54'] #ff = [float (i.strip ("[]")) मैं ff1 में एफएफ = [फ्लोट (i) के लिए मैं ff1 में प्रिंट "\ n% s"% ff प्रिंट "\ n टाइप एफएफ =% s"% प्रकार (एफएफ) और प्रकार अभी भी "सूची" हमेशा –

77

map(float, mylist) इसे करना चाहिए।

(अजगर 3 में, नक्शा एक सूची वस्तु वापस जाने के लिए, इसलिए यदि आप अधिक तेज़ी से दोहराने में एक नई सूची और न सिर्फ कुछ चाहते हैं रहता है, आप या तो जरूरत list(map(float, mylist) -। या जो यकीनन अधिक pythonic SilentGhost के जवाब का उपयोग करें)

10

float(item) सही काम करें: यह अपने तर्क को फ्लोट करने और इसे वापस करने के लिए परिवर्तित करता है, लेकिन यह जगह में तर्क नहीं बदलता है। अपने कोड के लिए एक सरल ठीक है: new_list = [float(i) for i in list]

सूची को बदलने के लिए यथा-स्थान:

for index, item in enumerate(list): 
    list[index] = float(item) 

Btw, के लिए list उपयोग करने से बचें

new_list = [] 
for item in list: 
    new_list.append(float(item)) 

एक ही कोड सूची समझ का उपयोग करते हुए कम लिखा जा सकता है आपके चर, क्योंकि यह एक ही नाम के साथ अंतर्निहित कार्य masquerades।

+0

क्षमा करें, मुझे यहां जगह में क्या नहीं मिला है।यह पिछले पायथनिक उत्तर से अलग कैसे है। पिछली उत्तर में रूपांतरण नहीं है "[फ्लोट (i) मैं lst में]] मूल सूची सूचकांक – AAI

+1

@AAI मूल सूची बनाम बनाम एक नया बनाओ। –

3

आप किसी सूची को सीधे फ़्लोटिंग सरणी या मैट्रिक्स में कनवर्ट करने के लिए numpy का उपयोग कर सकते हैं।

import numpy as np 
    list_ex = [1, 0] # This a list 
    list_int = np.array(list_ex) # This is a numpy integer array 

आप एक अस्थायी सरणी पूर्णांक सरणी कनवर्ट करना चाहते हैं तो यह

list_float = np.array(list_ex) + 0. # This is a numpy floating array 
1

को 0. जोड़ने यह मैं इसे कैसे करना होगा है।

my_list = ['0.49', '0.54', '0.54', '0.54', '0.54', '0.54', '0.55', '0.54', 
    '0.54', '0.54', '0.55', '0.55', '0.55', '0.54', '0.55', '0.55', '0.54', 
    '0.55', '0.55', '0.54'] 
print type(my_list[0]) # prints <type 'str'> 
my_list = [float(i) for i in my_list] 
print type(my_list[0]) # prints <type 'float'> 
संबंधित मुद्दे

 संबंधित मुद्दे