Python으로 데이터를 처리하다 보면 요소가 튜플(tuple)로 구성된 리스트를 다루게 되는 경우가 있습니다. 이때 각 튜플의 요소들을 하나의 문자열로 합쳐서 문자열 리스트로 변환해야 할 필요가 생기곤 하는데요. 이 글에서는 대표적인 두 가지 방법을 예제와 함께 살펴보겠습니다.
1. join() 메서드 활용하기
join() 메서드는 시퀀스의 요소들을 지정한 구분자(str separator)로 연결하여 하나의 문자열로 반환합니다. 리스트 컴프리헨션(list comprehension)을 사용해 각 튜플을 join()에 전달하고, 그 결과를 새로운 리스트에 담으면 됩니다.
예제
listA = [('M','o','n'), ('d','a','y'), ('7', 'pm')]
# 주어진 리스트
print("Given list : \n", listA)
res = [''.join(i) for i in listA]
# 결과
print("Final list: \n",res)실행 결과
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
Given list :
[('M', 'o', 'n'), ('d', 'a', 'y'), ('7', 'pm')]
Final list:
['Mon', 'day', '7pm']각 튜플 내부의 문자들이 빈 문자열('')을 구분자로 연결되어 'Mon', 'day', '7pm'처럼 깔끔한 문자열로 변환된 것을 확인할 수 있습니다.
2. map()과 join() 함께 활용하기
두 번째 방법은 앞선 방식과 원리는 같지만, 반복 대신 map() 함수를 사용해 join 메서드를 각 튜플에 일괄 적용한다는 점이 다릅니다. 마지막에는 list() 함수로 감싸서 결과를 리스트 형태로 만들어 줍니다.
예제
listA = [('M','o','n'), ('d','a','y'), ('7', 'pm')]
# 주어진 리스트
print("Given list : \n", listA)
res = list(map(''.join, listA))
# 결과
print("Final list: \n",res)실행 결과
위 코드를 실행하면 동일하게 아래와 같은 결과가 출력됩니다.
Given list :
[('M', 'o', 'n'), ('d', 'a', 'y'), ('7', 'pm')]
Final list:
['Mon', 'day', '7pm']정리
튜플 리스트를 문자열 리스트로 변환할 때는 join() + 리스트 컴프리헨션 방식과 map() + join() 방식 모두 간결하고 효율적으로 사용할 수 있습니다. 가독성을 중시한다면 리스트 컴프리헨션이, 함수형 스타일을 선호한다면 map() 조합이 적합합니다. 상황에 맞게 선택하여 활용해 보세요.