콘텐츠로 건너뛰기

파이썬에서 리스트 평탄화하는 방법

CodeMDD.io

Python 리스트 펼치기(flatten) 방법

간혹 데이터 작업을 할 때, 데이터가 중첩된 리스트 형태로 주어질 때가 있습니다. 이때 일반적인 작업 중 하나는 이 리스트를 1차원 리스트로 변환하는 것입니다. 리스트를 펼치는(플래튼하는) 작업은 행렬과 같은 다차원 리스트를 1차원 리스트로 변환하는 것을 의미합니다.

이 개념을 더 잘 설명하기 위해, 다음과 같은 숫자값의 행렬이 있다고 가정해봅시다:

matrix = [
[9, 3, 8, 3],
[4, 5, 2, 8],
[6, 4, 3, 1],
[1, 0, 4, 5],
]

matrix 변수는 네 개의 중첩된 리스트를 포함하는 Python 리스트를 가지고 있습니다. 각 중첩 리스트는 행을 나타냅니다. 행은 각각 네 개의 항목 또는 숫자를 가지고 있습니다. 이제 이 행렬을 다음과 같은 리스트로 변환하려고 합니다:

[9, 3, 8, 3, 4, 5, 2, 8, 6, 4, 3, 1, 1, 0, 4, 5]

변환된 이런 식으로 행렬을 펼치하고 어떻게 1차원 리스트를 얻을 수 있을까요? 이 튜토리얼에서는 Python에서 이 작업을 어떻게 수행하는지 알아보겠습니다.

for 루프를 사용하여 리스트의 리스트를 펼치는 방법

Python에서 리스트의 리스트를 어떻게 펼칠 수 있을까요? 일반적으로 리스트의 리스트를 펼치려면 다음 단계를 명시적으로 또는 암묵적으로 수행할 수 있습니다:

  1. 펼쳐진 데이터를 저장하기 위해 새로운 빈 리스트를 생성합니다.
  2. 원본 리스트의 각 중첩된 리스트 또는 서브리스트를 반복합니다.
  3. 현재 서브리스트의 각 항목을 펼쳐진 데이터의 리스트에 추가합니다.
  4. 펼쳐진 데이터를 반환하는 결과 리스트를 반환합니다.

그런 다음, flatten_extend()라는 이름의 함수를 사용하여 이 단계를 Python 코드로 전환해볼 수 있습니다. 이 함수는 for 루프와 .extend() 메서드를 사용하는 방법을 사용하여 이러한 단계를 수행합니다:

def flatten_extend(matrix):
flat_list = []
for row in matrix:
flat_list.extend(row)
return flat_list

flatten_extend() 함수 내부에서는 먼저 flat_list라는 새로운 빈 리스트를 만듭니다. 이 리스트는 matrix에서 추출한 펼쳐진 데이터를 저장하는 데 사용됩니다. 그런 다음, matrix의 내부 또는 중첩된 리스트에 대해 반복하는 루프를 시작합니다. 이 예제에서는 현재 중첩된 리스트를 나타내기 위해 row라는 이름을 사용합니다.

각 반복에서 .extend()를 사용하여 현재 서브리스트의 내용을 flat_list에 추가합니다. 이 메서드는 인자로 반복 가능한(iterable) 객체를 취하고 해당 항목을 대상 리스트의 끝에 추가합니다.

이제 다음 코드를 실행하여 함수가 작동하는지 확인해보세요:

print(flatten_extend(matrix))

코드에 실행 가능한 샘플을 자세하게 포함시켜보세요.