Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 숫자 문자열 리스트를 정수 리스트로 변환하는 방법

Python으로 데이터를 다루다 보면 리스트 안에 숫자가 문자열 형태로 들어 있는 경우를 자주 만나게 됩니다. 이런 데이터로 계산을 수행하려면 먼저 문자열을 숫자로 변환해야 합니다. 이 글에서는 리스트 내부의 문자열을 숫자로 바꾸는 다양한 방법을 소개합니다.

int() 함수 사용하기

int() 함수는 리스트의 문자열 요소에 적용하여 정수로 변환할 수 있습니다. 요소 하나 안에 여러 개의 문자열이 포함되어 있더라도 모든 값을 처리하려면, 각 요소를 빠짐없이 순회하도록 for 루프를 신중하게 설계해야 합니다.

예제

listA = [['29','12'], ['25'], ['70']]
# 주어진 리스트
print("Given list A: ", listA)
# int 사용
res = [[int(n) for n in element] for i in listA for element in i]
# 결과 출력
print("The numeric lists: ", res)

출력

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

Given list A: [['29', '12'], ['25'], ['70']]
The numeric lists: [[2, 9], [1, 2], [2, 5], [7, 0]]

위 예제의 중첩 리스트 컴프리헨션은 각 문자열을 한 글자씩 순회하면서 int()로 변환합니다. 따라서 '29'가 [2, 9]처럼 자릿수별 정수 리스트로 분해되어 출력됩니다.

map() 함수 사용하기

map() 함수를 활용하는 방법도 있습니다. map()은 지정된 함수를 전달받은 각 인자에 반복적으로 적용하는 역할을 하며, 내부 리스트에서 요소를 하나씩 꺼내오는 for 루프와 함께 사용됩니다. 다만 이 방식은 내부 리스트에 여러 개의 요소가 들어 있는 경우에는 동작하지 않는다는 점에 유의해야 합니다.

예제

listA = [['29'], ['25'], ['70']]
# 주어진 리스트
print("Given list A: ", listA)
# map 사용
res = [list(map(int, list(elem[0]))) for elem in listA if elem]
# 결과 출력
print("The numeric lists: ", res)

출력

위 코드를 실행하면 다음과 같은 결과가 나옵니다.

Given list A: [['29'], ['25'], ['70']]
The numeric lists: [[2, 9], [2, 5], [7, 0]]

참고: 문자열 전체를 하나의 정수로 변환하기

'29'를 29처럼 문자열 전체를 하나의 정수 값으로 변환하고 싶다면, 아래와 같이 더 간단한 리스트 컴프리헨션을 사용하는 것이 좋습니다.

listA = [['29', '12'], ['25'], ['70']]
res = [[int(x) for x in elem] for elem in listA]
print(res)

실행 결과:

[[29, 12], [25], [70]]

이처럼 데이터의 구조와 목적에 맞는 방법을 선택하면, 중첩된 리스트 안에 있는 숫자 문자열도 손쉽게 정수로 변환하여 계산에 활용할 수 있습니다.