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

Python에서 문자열 리스트를 튜플 리스트로 변환하는 방법

파이썬으로 데이터를 다루다 보면 숫자가 문자열 형태로 저장되어 있는 리스트를 마주치는 경우가 많습니다. 예를 들어 '21, 3'처럼 쉼표로 구분된 숫자 문자열들이 리스트에 담겨 있을 때, 이를 연산이나 데이터 처리에 활용하려면 튜플 형태로 변환해야 할 필요가 생깁니다.

이 글에서는 문자열 리스트를 튜플 리스트로 변환하는 대표적인 두 가지 방법을 소개합니다. 각각의 장단점도 함께 살펴보겠습니다.

1. map과 eval 함수 활용하기

가장 간단한 방법은 map 함수를 사용해 리스트의 모든 요소에 eval을 적용하는 것입니다. eval은 문자열을 그대로 파이썬 표현식으로 평가하기 때문에, '21, 3'이라는 문자열이 자동으로 (21, 3)이라는 튜플로 변환됩니다. 마지막에는 결과를 list()로 감싸서 저장하면 됩니다.

예제 코드

listA = ['21, 3', '13, 4', '15, 7']
# 주어진 리스트
print("Given list : \n", listA)
# eval 적용
res = list(map(eval, listA))
# 결과 출력
print("List of tuples: \n", res)

실행 결과

Given list :
['21, 3', '13, 4', '15, 7']
List of tuples:
[(21, 3), (13, 4), (15, 7)]

문자열 리스트가 그대로 [(21, 3), (13, 4), (15, 7)]라는 정수형 튜플 리스트로 변환된 것을 확인할 수 있습니다.

2. map과 split 함수 활용하기

두 번째 방법은 더 안전하고 명시적인 접근 방식입니다. 먼저 split 함수를 사용해 문자열을 쉼표(', ') 기준으로 분리한 뒤, map(int, ...)으로 각 조각을 정수로 변환합니다. 이후 tuple 함수를 적용해 요소들이 쌍을 이루는 튜플을 생성하고, 리스트 컴프리헨션으로 전체를 처리합니다.

예제 코드

listA = ['21, 3', '13, 4', '15, 7']
# 주어진 리스트
print("Given list : \n", listA)
# split과 int 변환 적용
res = [tuple(map(int, sub.split(', '))) for sub in listA]
# 결과 출력
print("List of tuples: \n", res)

실행 결과

Given list :
['21, 3', '13, 4', '15, 7']
List of tuples:
[(21, 3), (13, 4), (15, 7)]

두 방법 모두 동일한 결과를 출력하지만, 실무 환경에서는 두 번째 방법을 권장합니다. eval은 입력값에 대한 신뢰가 없을 경우 임의의 코드 실행 등 심각한 보안 위험을 초래할 수 있기 때문입니다. 반면 splitint를 조합한 방식은 의도한 변환만 수행하므로 안전하고 예측 가능합니다.