3차원 행렬(리스트의 리스트의 리스트)을 좌표 형태의 목록으로 변환해야 하는 경우, zip 메서드와 리스트 컴프리헨션(list comprehension)을 활용하면 간단하게 처리할 수 있습니다.
예제 코드
아래는 실제 동작 과정을 보여주는 예제입니다.
my_list_1 = [[['He', 'Wi'], ['llo', 'll']], [['Pyt', 'i'], ['hon', 'sFun']], [['Ho', 'g'], ['pe', 'ood']]]
print("The list is : ")
print(my_list_1)
my_list_1.sort()
print("The list after sorting is ")
print(my_list_1)
my_result = [ele for sub_elem_1, sub_elem_2 in my_list_1 for ele in zip(sub_elem_1, sub_elem_2)]
print("The resultant list is : ")
print(my_result)실행 결과
The list is :
[[['He', 'Wi'], ['llo', 'll']], [['Pyt', 'i'], ['hon', 'sFun']], [['Ho', 'g'], ['pe', 'ood']]]
The list after sorting is
[[['He', 'Wi'], ['llo', 'll']], [['Ho', 'g'], ['pe', 'ood']], [['Pyt', 'i'], ['hon', 'sFun']]]
The resultant list is :
[('He', 'llo'), ('Wi', 'll'), ('Ho', 'pe'), ('g', 'ood'), ('Pyt', 'hon'), ('i', 'sFun')]코드 설명
먼저 리스트 안에 리스트가 중첩된 3차원 구조의 리스트를 정의하고, 콘솔에 출력합니다.
이 리스트를 오름차순으로 정렬한 뒤 다시 콘솔에 출력합니다. 정렬 결과 두 번째 요소인 'Ho'로 시작하는 항목이 'Pyt'보다 앞으로 이동한 것을 확인할 수 있습니다.
리스트 컴프리헨션을 사용하여 정렬된 리스트를 순회하면서, 각 하위 요소 쌍(sub_elem_1, sub_elem_2)에 대해 zip 함수를 적용합니다. 이를 통해 인접한 두 리스트에서 같은 위치에 있는 요소들이 하나의 튜플로 묶이게 됩니다.
생성된 결과는 새로운 리스트로 변환되어 변수 my_result에 할당됩니다.
마지막으로 결과 리스트를 콘솔에 출력하여 좌표 형태의 데이터를 확인합니다.
이처럼 zip과 리스트 컴프리헨션을 조합하면 복잡한 반복문 없이도 다차원 데이터를 원하는 형태의 좌표 목록으로 손쉽게 변환할 수 있습니다.