파이썬으로 리스트를 다루다 보면, 리스트에 담긴 문자열들을 하나하나 쪼개어 개별 문자 단위로 처리해야 하는 경우가 종종 있습니다. 예를 들어 ['Mon', 'd', 'ay'] 같은 리스트를 ['M', 'o', 'n', 'd', 'a', 'y']처럼 문자 하나하나로 분리하는 것이죠. 이번 글에서는 이러한 변환을 수행할 수 있는 대표적인 세 가지 방법을 예제 코드와 함께 살펴보겠습니다.
1. 리스트 컴프리헨션(List Comprehension) 활용
리스트 컴프리헨션 안에 for 루프를 두 겹으로 중첩하면 됩니다. 바깥쪽 루프가 리스트의 각 요소(문자열)를 순회하고, 안쪽 루프가 해당 문자열에서 문자를 하나씩 꺼내어 새로운 리스트에 담습니다.
예제
listA = ['Mon', 'd', 'ay']
# 주어진 리스트
print("Given list : \n", listA)
# 각 문자 추출
res = [i for ele in listA for i in ele]
# 결과 출력
print("List of characters: \n", res)
출력 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list : ['Mon', 'd', 'ay'] List of characters: ['M', 'o', 'n', 'd', 'a', 'y']
2. itertools.chain() 함수 활용
파이썬 표준 라이브러리인 itertools 모듈이 제공하는 chain.from_iterable() 함수를 사용하는 방법입니다. 이 함수는 여러 iterable(여기서는 각 문자열)을 하나로 연결해 주므로, 리스트에 담긴 모든 문자를 손쉽게 펼쳐서 새로운 리스트로 만들 수 있습니다.
예제
from itertools import chain
listA = ['Mon', 'd', 'ay']
# 주어진 리스트
print("Given list : \n", listA)
# 각 문자 추출
res = list(chain.from_iterable(listA))
# 결과 출력
print("List of characters: \n", res)
출력 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list : ['Mon', 'd', 'ay'] List of characters: ['M', 'o', 'n', 'd', 'a', 'y']
3. join() 메서드 활용
join() 메서드로 리스트의 모든 문자열을 하나의 문자열로 합친 뒤, list() 함수를 적용하는 방법입니다. 파이썬에서는 문자열에 list()를 적용하면 문자 하나하나가 별도의 요소로 분리되는데, 이 특성을 그대로 활용한 것입니다.
예제
listA = ['Mon', 'd', 'ay']
# 주어진 리스트
print("Given list : \n", listA)
# 문자열로 합친 후 문자별로 분리
res = list(''.join(listA))
# 결과 출력
print("List of characters: \n", res)
출력 결과
위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
Given list : ['Mon', 'd', 'ay'] List of characters: ['M', 'o', 'n', 'd', 'a', 'y']
마무리
세 가지 방법 모두 동일한 결과를 반환하지만 각각의 장점이 있습니다. 리스트 컴프리헨션은 별도의 임포트 없이도 직관적으로 이해하기 쉽고, chain.from_iterable()은 대용량 데이터를 처리할 때 성능이 좋은 편이며, join() 방식은 코드가 가장 짧고 간결합니다. 프로젝트의 요구 사항과 코드 가독성을 고려해 적합한 방법을 선택하시면 됩니다.