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

파이썬(Python)에서 주어진 리스트를 중첩 리스트로 변환하는 방법

리스트에 담긴 각 요소를 개별적인 리스트로 변환해야 하는 상황이 종종 발생합니다. 다시 말해, 요소 자체가 리스트로 구성된 중첩 리스트(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']]