텍스트 파일을 읽고 십진수를 문자열로 가져 와서 목록에 넣는 스크립트가 있습니다.
그래서 나는이 목록을 가지고 있습니다 :
['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'>