재귀 기법을 사용하여 주어진 중첩 목록을 평면화해야 하는 경우 단순 인덱싱 및 'isinstance' 메서드를 재귀와 함께 사용할 수 있습니다.
재귀는 더 큰 문제의 작은 비트의 출력을 계산하고 이러한 비트를 결합하여 더 큰 문제에 대한 솔루션을 제공합니다.
예시
아래는 동일한 데모입니다 -
def flatten_list(my_list): if my_list == []: return my_list if isinstance(my_list[0], list): return flatten_list(my_list[0]) + flatten_list(my_list[1:]) return my_list[:1] + flatten_list(my_list[1:]) my_list = [[1,2],[3,4], [90, 11], [56, 78], [[34,56]]] print("The list is :") print(my_list) print("The list after flattening is : ") print(flatten_list(my_list))
출력
The list is : [[1, 2], [3, 4], [90, 11], [56, 78], [[34, 56]]] The list after flattening is : [1, 2, 3, 4, 90, 11, 56, 78, 34, 56]
설명
- 목록을 매개변수로 사용하는 'flatten_list'라는 메서드가 정의되어 있습니다.
- 목록의 첫 번째 요소의 데이터 유형을 확인합니다.
- 목록과 일치하면 첫 번째 요소와 마지막 요소의 두 번째 요소를 연결하여 표시합니다.
- 이 결과 중첩 목록이 병합됩니다.
- 그렇지 않으면 첫 번째 요소가 생략되고 목록이 먼저 반전되고 일반 목록이 결합되어 출력으로 반환됩니다.
- 함수 외부에 중첩 목록이 정의되어 콘솔에 표시됩니다.
- 매개변수로 목록을 전달하여 메소드를 호출합니다.
- 출력은 콘솔에 표시됩니다.