2009-10-23 7 views
128

나는 텍스트 파일을 읽고, 10 진수를 문자열로 가져 와서 목록에 넣는 스크립트를 가지고있다.파이썬에서는 목록에있는 모든 항목을 수레로 변환하려면 어떻게해야합니까?

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

그래서 나는이 목록을 가지고 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] 

정확히 말하면 float 값을 사용하여 새 목록을 만듭니다. map 접근 방식과는 달리 py3k에서 작동합니다.

+0

동일한 문제가 있었지만 해결되지 않았습니다. ff1 = [ '0.49', '0.54', '0.54', '0.54', '0.54', '0.54', '0.55', '0.54', '0.54' 0.55, 0.55, 0.55, 0.55, 0.54, 0.55, 0.55, 0.54 '] #ff = [float ff1에있는 i에 대한 float (i.strip ("[]"))] ff1 [ff1의 i에 대해 float (i)] "\ n % s"% ff "\ n 유형 ff = % s" type (ff) 이고 Type은 여전히 ​​"List"입니다. –

77

map(float, mylist)해야합니다.

은 (파이썬 3에서,지도는 어느 list(map(float, mylist)이 필요하면 반복하는 새 목록뿐 아니라 무언가를 원한다면, 목록 개체를 반환 중단 -. 또는 어떤 틀림없이 더 파이썬 SilentGhost의 답변을 사용)

10

float(item) 옳은 일을합니다 : 그것은 인수를 float로 변환하고 반환하지만 내부적으로 인수를 변경하지 않습니다. 코드에 대한 간단한 수정은 다음과 같습니다 BTW

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

에 대한 list을 사용하지 마십시오 : new_list = [float(i) for i in list]

이 자리에서 목록을 변경하려면 :

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

같은 코드가 지능형리스트를 사용하여 짧은 기록 할 수 있습니다 동일한 이름을 가진 내장 함수를 가장하기 때문에 변수를 사용하십시오.

+0

죄송합니다. 현재 위치에서 어떤 의미인지 알 수 없습니다.이전 pythonic 대답과 어떻게 다른가요? 이전 답변에서의 변환은 "원래 목록에있는 float (i)"원래 목록 색인을 유지하지 않습니다 – 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'> 
관련 문제