목록의 모든 문자열을 정수로 변환
목록의 모든 문자열을 정수로 변환하려면 어떻게 해야 합니까?
['1', '2', '3'] ⟶ [1, 2, 3]
지정:
xs = ['1', '2', '3']
그 때 사용list
정수 목록을 얻으려면:
list(map(int, xs))
Python 2에서는list
는 목록을 반환했기 때문에 불필요했습니다.
map(int, xs)
목록에서 목록 이해 사용xs
:
[int(x) for x in xs]
예.
>>> xs = ["1", "2", "3"]
>>> [int(x) for x in xs]
[1, 2, 3]
리스트내의 문자열 번호를 정수로 변환하는 방법은 몇개인가 있습니다.
Python 2.x에서는 맵 함수를 사용할 수 있습니다.
>>> results = ['1', '2', '3']
>>> results = map(int, results)
>>> results
[1, 2, 3]
여기서 함수를 적용한 후 요소 목록을 반환합니다.
Python 3.x에서는 동일한 맵을 사용할 수 있습니다.
>>> results = ['1', '2', '3']
>>> results = list(map(int, results))
>>> results
[1, 2, 3]
python 2.x와 달리 Here map 함수는 맵 객체를 반환합니다. iterator
결과(값)를 하나씩 산출하기 때문에 다음과 같은 함수를 추가해야 합니다.list
모든 반복 가능한 항목에 적용됩니다.
다음 이미지를 참조하여 반환값을 확인하십시오.map
python 3.x의 경우 함수와 타입입니다.
python 2.x와 python 3.x 모두에 공통적인 세 번째 방법, 즉 List Compreptions
>>> results = ['1', '2', '3']
>>> results = [int(i) for i in results]
>>> results
[1, 2, 3]
python의 루프 단축기법을 사용하여 문자열 목록 항목을 int 항목으로 쉽게 변환할 수 있습니다.
문자열이 있다고 가정합니다.result = ['1','2','3']
그냥 해.
result = [int(item) for item in result]
print(result)
다음과 같은 출력을 얻을 수 있습니다.
[1,2,3]
목록에 순수 정수 문자열이 포함되어 있는 경우 허용되는 답변이 선택 방법입니다.정수가 아닌 것을 주면 크래시 됩니다.
따라서 ints, float 또는 기타 정보를 포함하는 데이터가 있는 경우 오류 처리를 통해 자신의 기능을 활용할 수 있습니다.
def maybeMakeNumber(s):
"""Returns a string 's' into a integer if possible, a float if needed or
returns it as is."""
# handle None, "", 0
if not s:
return s
try:
f = float(s)
i = int(f)
return i if f == i else f
except ValueError:
return s
data = ["unkind", "data", "42", 98, "47.11", "of mixed", "types"]
converted = list(map(maybeMakeNumber, data))
print(converted)
출력:
['unkind', 'data', 42, 98, 47.11, 'of mixed', 'types']
또, 이 도우미를 사용하면, 노트북내의 반복도 취급할 수 있습니다.
from collections.abc import Iterable, Mapping
def convertEr(iterab):
"""Tries to convert an iterable to list of floats, ints or the original thing
from the iterable. Converts any iterable (tuple,set, ...) to itself in output.
Does not work for Mappings - you would need to check abc.Mapping and handle
things like {1:42, "1":84} when converting them - so they come out as is."""
if isinstance(iterab, str):
return maybeMakeNumber(iterab)
if isinstance(iterab, Mapping):
return iterab
if isinstance(iterab, Iterable):
return iterab.__class__(convertEr(p) for p in iterab)
data = ["unkind", {1: 3,"1":42}, "data", "42", 98, "47.11", "of mixed",
("0", "8", {"15", "things"}, "3.141"), "types"]
converted = convertEr(data)
print(converted)
출력:
['unkind', {1: 3, '1': 42}, 'data', 42, 98, 47.11, 'of mixed',
(0, 8, {'things', 15}, 3.141), 'types'] # sets are unordered, hence diffrent order
목록 이해보다 조금 더 넓지만 마찬가지로 유용합니다.
def str_list_to_int_list(str_list):
n = 0
while n < len(str_list):
str_list[n] = int(str_list[n])
n += 1
return(str_list)
예.
>>> results = ["1", "2", "3"]
>>> str_list_to_int_list(results)
[1, 2, 3]
기타:
def str_list_to_int_list(str_list):
int_list = [int(n) for n in str_list]
return int_list
다음은 질문에 대한 설명과 함께 간단한 해결 방법입니다.
a=['1','2','3','4','5'] #The integer represented as a string in this list
b=[] #Fresh list
for i in a: #Declaring variable (i) as an item in the list (a).
b.append(int(i)) #Look below for explanation
print(b)
여기서 append()는 항목(즉, 이 프로그램의 문자열(i) 정수 버전)을 목록(b) 끝에 추가하기 위해 사용됩니다.
주의: int()는 문자열 형식의 정수를 정수 형식으로 변환하는 데 도움이 되는 함수입니다.
출력 콘솔:
[1, 2, 3, 4, 5]
따라서 리스트 내의 문자열 항목을 정수로 변환할 수 있는 것은 지정된 문자열이 모두 숫자로 구성되어 있지 않으면 오류가 발생합니다.
입력 시 한 줄로 간단하게 할 수 있습니다.
[int(i) for i in input().split("")]
네가 원하는 곳으로 나눠라.
을 목록 하십시오.input().split("")
.
또한 Python | 목록의 모든 문자열을 정수로 변환하고 싶다.
방법 #1 : Naigive 방법
# Python3 code to demonstrate
# converting list of strings to int
# using naive method
# initializing list
test_list = ['1', '4', '3', '6', '7']
# Printing original list
print ("Original list is : " + str(test_list))
# using naive method to
# perform conversion
for i in range(0, len(test_list)):
test_list[i] = int(test_list[i])
# Printing modified list
print ("Modified list is : " + str(test_list))
출력:
Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]
방법 #2 : 목록 이해 사용
# Python3 code to demonstrate
# converting list of strings to int
# using list comprehension
# initializing list
test_list = ['1', '4', '3', '6', '7']
# Printing original list
print ("Original list is : " + str(test_list))
# using list comprehension to
# perform conversion
test_list = [int(i) for i in test_list]
# Printing modified list
print ("Modified list is : " + str(test_list))
출력:
Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]
방법 3 : map() 사용
# Python3 code to demonstrate
# converting list of strings to int
# using map()
# initializing list
test_list = ['1', '4', '3', '6', '7']
# Printing original list
print ("Original list is : " + str(test_list))
# using map() to
# perform conversion
test_list = list(map(int, test_list))
# Printing modified list
print ("Modified list is : " + str(test_list))
출력:
Original list is : ['1', '4', '3', '6', '7']
Modified list is : [1, 4, 3, 6, 7]
다음 답변은 가장 일반적인 답변일지라도 모든 상황에서 사용할 수 있는 것은 아닙니다.초저항 스러스트 스트링을 위한 솔루션이 있습니다.난 그런 게 있었어
AA = ['0', '0.5', '0.5', '0.1', '0.1', '0.1', '0.1']
AA = pd.DataFrame(AA, dtype=np.float64)
AA = AA.values.flatten()
AA = list(AA.flatten())
AA
[0.0, 0.5, 0.5, 0.1, 0.1, 0.1, 0.1]
웃을 수 있지만, 효과가 있어요.
잘못된 입력 강제 적용
int()
유효하지 않은 값이 공급되면 에러가 발생합니다.팬더스의 NaN과 )to_numeric
behaviors)는의 이해를 할 수 .
[int(x) if x.replace('-','', 1).replace('+','',1).isdecimal() else float('nan') for x in lst]
기본적으로 값이 10진수인지 여부(음수 또는 양수)를 확인합니다. 표기법 과과 ( (예예:1e3
)는정수일 있습니다할 수 이 떨어집니다이 경우, 이해에 다른 조건을 추가할 수 있습니다(읽기 쉬운 것은 거의 없습니다).
[int(x) if x.replace('-','', 1).replace('+','',1).isdecimal() else int(e[0])*10**int(e[1]) if (e:=x.split('e',1))[1:] and e[1].isdecimal() else float('nan') for x in lst]
★★★의 lst = ['+1', '2', '-3', 'string', '4e3']
는 , 을 반환합니다.[1, 2, -3, nan, 4000]
약간의 조정으로 플로트도 취급할 수 있습니다만, 그것은 별개의 토픽입니다.
map()은 목록 이해보다 빠릅니다.
map()
목록 이해보다 약 64% 빠릅니다.플롯에서 알수 음음음 as as as as as as as as asmap()
리스트 사이즈에 관계없이 리스트 이해보다 뛰어난 퍼포먼스를 발휘합니다.
그림을 생성하는 데 사용되는 코드:
from random import choices, randint
from string import digits
from perfplot import plot
plot(
setup=lambda n: [''.join(choices(digits, k=randint(1,10))) for _ in range(n)],
kernels=[lambda lst: [int(x) for x in lst], lambda lst: list(map(int, lst))],
labels= ["[int(x) for x in lst]", "list(map(int, lst))"],
n_range=[2**k for k in range(4, 22)],
xlabel='Number of items',
title='Converting strings to integers',
equality_check=lambda x,y: x==y);
언급URL : https://stackoverflow.com/questions/7368789/convert-all-strings-in-a-list-to-integers
'programing' 카테고리의 다른 글
Xaml과 바인딩을 사용하여 ScrollViewer의 맨 아래까지 자동으로 스크롤하는 방법 (0) | 2023.04.15 |
---|---|
여러 커밋을 선택하는 방법 (0) | 2023.04.10 |
WPF 탭 컨트롤에서 사다리꼴 탭을 만드는 방법 (0) | 2023.04.10 |
T-SQL에서 Date Time 필드를 업데이트하려면 어떻게 해야 합니까? (0) | 2023.04.10 |
'git reset --hard HEAD'를 사용하여 이전 커밋으로 되돌리려면 어떻게 해야 합니까? (0) | 2023.04.10 |