리스트에 담긴 각 요소를 개별적인 리스트로 변환해야 하는 상황이 종종 발생합니다. 다시 말해, 요소 자체가 리스트로 구성된 중첩 리스트(nested list)를 만드는 것이죠. 이번 글에서는 파이썬에서 이러한 변환을 수행하는 두 가지 방법을 살펴보겠습니다.
1. 반복문(iteration) 활용하기
가장 기본적인 접근 방식은 반복문을 사용하는 것입니다. 원본 리스트의 각 요소를 순회하면서 해당 요소를 리스트 형태로 변환하고, 임시 리스트를 활용해 결과를 누적합니다. 마지막에는 리스트로 변환된 모든 요소를 하나로 묶어 원하는 형태의 '리스트의 리스트'를 완성합니다.
예제 코드
listA = ['Mon','Tue','Wed','Thu','Fri']
print("Given list:\n",listA)
new_list = []
# 리스트의 리스트 형태로 생성
for elem in listA:
temp = elem.split(', ')
new_list.append(temp)
# 최종 리스트 조합
res = []
for elem in new_list:
temp = []
for e in elem:
temp.append(e)
res.append(temp)
# 결과 출력
print("The list of lists:\n",res)
실행 결과
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
Given list:
['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
The list of lists:
[['Mon'], ['Tue'], ['Wed'], ['Thu'], ['Fri']]
2. ast 모듈 활용하기
파이썬 기본 라이브러리인 ast(abstract syntax trees) 모듈을 사용하는 방법도 있습니다. 이 모듈이 제공하는 literal_eval() 함수는 문자열로 표현된 리터럴을 안전하게 실제 파이썬 객체로 변환해 줍니다. 이를 활용하면 문자열 안에 묶여 있는 여러 요소들을 그대로 유지한 채 새로운 리스트로 변환할 수 있습니다.
예제 코드
import ast
listA = ['"Mon","Tue"','"Wed","Thu","Fri"']
print("Given list: \n", listA)
res = [list(ast.literal_eval(x)) for x in listA]
# 새로운 리스트 출력
print("The list of lists:\n",res)
실행 결과
위 코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.
Given list:
['"Mon","Tue"', '"Wed","Thu","Fri"']
The list of lists:
[['Mon', 'Tue'], ['Wed', 'Thu', 'Fri']]