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

Python – 리스트의 인접 요소 구하기

리스트의 각 요소에 대해 인접한 요소(앞뒤 요소)를 확인해야 하는 경우, enumerate와 간단한 반복문을 활용한 메서드를 정의하여 손쉽게 결과를 얻을 수 있습니다.

예제

다음은 리스트의 인접 요소를 찾는 방법을 보여주는 예제입니다.

def find_adjacent_elements(my_list):
    my_result = []
    for index, ele in enumerate(my_list):
        if index == 0:
            my_result.append((None, my_list[index + 1]))
        elif index == len(my_list) - 1:
            my_result.append((my_list[index - 1], None))
        else:
            my_result.append((my_list[index - 1], my_list[index + 1]))
    return my_result

my_list = [13, 37, 58, 12, 41, 25, 48, 19, 23]

print("The list is:")
print(my_list)

print("The result is :")
print(find_adjacent_elements(my_list))

출력

The list is:
[13, 37, 58, 12, 41, 25, 48, 19, 23]
The result is :
[(None, 37), (13, 58), (37, 12), (58, 41), (12, 25), (41, 48), (25, 19), (48, 23), (19, None)]

코드 설명

  • find_adjacent_elements라는 이름의 메서드를 정의하며, 이 메서드는 리스트를 매개변수로 받아 순회합니다.

  • 결과를 저장할 빈 리스트를 먼저 생성합니다.

  • enumerate를 사용해 인덱스와 요소를 함께 순회하면서, 인덱스 값에 따라 결과를 결정합니다.

  • 인덱스가 0이라면 현재 요소가 첫 번째 요소이므로, 앞 요소는 None으로 처리하고 뒤 요소만 튜플로 추가합니다.

  • 인덱스가 '리스트 길이 - 1'과 같다면 마지막 요소이므로, 앞 요소만 추가하고 뒤 요소는 None으로 처리합니다.

  • 그 외의 경우에는 이전 요소와 다음 요소를 모두 튜플 형태로 묶어 추가합니다.

  • 메서드 외부에서 리스트를 정의하고 콘솔에 출력합니다.

  • 완성된 리스트를 매개변수로 전달하여 메서드를 호출합니다.

  • 최종 결과가 콘솔에 출력됩니다.

참고: 리스트 컴프리헨션으로 더 간결하게

동일한 로직을 리스트 컴프리헨션을 사용하면 다음과 같이 더 간결하게 작성할 수도 있습니다.

def find_adjacent_elements(my_list):
    return [
        (my_list[i - 1] if i > 0 else None,
         my_list[i + 1] if i < len(my_list) - 1 else None)
        for i in range(len(my_list))
    ]

두 방법 모두 경계에 위치한 첫 번째와 마지막 요소의 경우 존재하지 않는 인접 요소를 None으로 표시한다는 점을 기억하세요. 상황에 따라 반복문 방식이 가독성 면에서 유리할 수 있고, 리스트 컴프리헨션 방식이 코드 길이 면에서 유리할 수 있습니다.