[python] 파이썬에서 목록의 모든 항목을 부동으로 변환하는 방법은 무엇입니까?

텍스트 파일을 읽고 십진수를 문자열로 가져 와서 목록에 넣는 스크립트가 있습니다.

그래서 나는이 목록을 가지고 있습니다 :

['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)

그러나 이것은 나를 위해 작동하지 않는 것 같습니다.



답변

[float(i) for i in lst]

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


답변

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

(파이썬 3에서 map은리스트 객체를 반환하는 것을 list(map(float, mylist)멈추므로 반복 할 무언가가 아니라 새로운리스트를 원한다면 더 많은 피닉스적인 SilentGhost의 대답이 필요합니다 .)


답변

float(item)옳은 일을하십시오 : 인수를 부동 소수점으로 변환하여 반환하지만 인수를 제자리에서 변경하지는 않습니다. 코드의 간단한 수정 사항은 다음과 같습니다.

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

목록 이해를 사용하여 동일한 코드를 더 짧게 작성할 수 있습니다. new_list = [float(i) for i in list]

전체 목록을 변경하려면 다음을 수행하십시오.

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

BTW, list같은 이름의 내장 함수를 가장하기 때문에 변수에 사용하지 마십시오 .


답변

이것은 루프를 사용하지 않고 다른 방법입니다!

import numpy as np
list(np.float_(list_name))


답변

당신은 심지어 numpy로 이것을 할 수 있습니다

import numpy as np
np.array(your_list,dtype=float)

이 목록의 np 배열을 float로 반환합니다.

‘dtype’을 int로 설정할 수도 있습니다


답변

numpy를 사용하여 목록을 부동 배열 또는 행렬로 직접 변환 할 수 있습니다.

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

정수 배열을 부동 배열로 변환하려면 0을 추가하십시오.

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


답변

이것이 내가하는 방법입니다.

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'>