Python에서 목록 및 목록 평면화 가이드

2D 배열을 1D 배열로 변환하는 것을 평면화라고 합니다. 문제를 해결하는 방법에는 여러 가지가 있습니다.

이 튜토리얼에서 그 중 일부를 살펴볼 것입니다.

예를 보겠습니다.

입력

[[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

산출

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

#1. 루프

문제를 해결하는 가장 일반적인 방법은 루프를 사용하는 것입니다. 대부분 이미 받으셨다고 생각합니다. 루프를 사용하여 문제를 해결하는 단계를 살펴보겠습니다.

  • 더미 데이터로 목록 목록을 초기화하고 데이터로 이름을 지정합니다.
  • 이제 flat_list라는 빈 목록을 초기화합니다.
  • 데이터를 반복합니다.
    • 현재 목록에서 모든 요소의 압축을 풉니다.
    • 목록 추가 방법을 사용하여 flat_list에 추가하십시오.
  • 결과를 인쇄하십시오.

아래 문제에 대한 코드를 참조하십시오.

# initializing the data and an empty list
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]
flat_list = []

# iterating over the data
for item in data:
    # appending elements to the flat_list
    flat_list += item

# printing the resultantn flat_list
print(flat_list)

연결 연산자 대신 다른 루프를 사용하여 flat_list에 하위 목록 요소를 추가할 수 있습니다. 루프 대신 목록 내포를 사용할 수도 있습니다.

둘 다 같은 작업을 수행합니다. 문제를 해결하는 다음 방법을 살펴보겠습니다.

#2. Itertools – 체인

itertools 내장 모듈에서 chain이라는 메소드를 사용할 것입니다.

메서드 체인은 각 하위 목록을 반복하고 하위 목록이 없을 때까지 요소를 반환합니다. 그것은 목록으로 변환해야 하는 iterable을 반환합니다.

문제 해결과 관련된 단계를 살펴보겠습니다.

  • 더미 데이터로 목록 목록을 초기화하고 데이터로 이름을 지정합니다.
  • itertools.chain(*data)를 사용하여 평평한 iterable을 가져옵니다.
  • 결과 iterable을 목록으로 변환합니다.
  • 병합 목록을 인쇄합니다.

아래 스 니펫의 코드를 살펴볼 수 있습니다.

# importing the module
import itertools

# initializing the data
data = [[1, 2, 3], [4, 5], [6, 7, 8, 9, 10]]

# flattening the list and storing the result
flat_list = itertools.chain(*data)

# converting iterable to list and printing
print(list(flat_list))

#삼. 다단계 목록 평면화

목록 목록을 병합하는 방법을 살펴보았습니다. 목록을 평면화하기 위해 논의한 위의 방법은 다단계 목록에는 작동하지 않습니다. 예를 보겠습니다.

  Coursera 및 무료 온라인 비디오 강의 라이브러리가 Android로 제공됨

입력

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

산출

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

프로그램 이전에 목록의 깊이를 모르기 때문에 문제를 해결하기 위해 재귀를 사용해야 합니다.

  • 예제와 같이 데이터를 초기화하고 데이터로 이름을 지정합니다.
  • flat_list라는 빈 목록을 초기화합니다.
  • flatten_list라는 함수를 작성하십시오.
    • 주어진 목록의 요소를 반복합니다.
    • 요소가 목록이면 동일한 함수를 재귀적으로 다시 호출합니다.
    • 요소가 목록이 아니면 요소를 flat_list에 추가합니다.
  • 데이터로 함수를 호출합니다.
  • 이 함수는 flat_list 목록의 모든 요소를 ​​채웁니다.
  • flat_list를 인쇄하여 출력을 확인하십시오.

휴! 코딩 단계가 많습니다. 괜찮아요. 위의 문장을 코드로 변환하는 데 몇 분도 걸리지 않습니다.

# initializing the data and empty list
data = [1, [2, 3, [4, 5]], 6, [[7], [8, 9]]]
flat_list = []

# function
def flatten_list(data):
    # iterating over the data
    for element in data:
        # checking for list
        if type(element) == list:
            # calling the same function with current element as new argument
            flatten_list(element)
        else:
            flat_list.append(element)

# flattening the given list
flatten_list(data)

# printing the flat_list
print(flat_list)

기존 목록을 변환하지 않았다는 점을 기억하십시오. 대신 주어진 목록 요소로 새 목록을 만들었습니다.

결론

튜토리얼을 즐겼기를 바랍니다. Python에서 목록을 평면화하는 다른 많은 방법이 있을 수 있지만 위의 방법이 아마도 가장 쉬운 방법이라고 느꼈습니다.

행복한 코딩 🙂