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

파이썬으로 리스트에서 'K' 거리 이내에 없는 요소 찾는 방법

리스트에서 'K' 거리 이내에 속하지 않는 요소를 찾아야 할 때는 간단한 반복문과 append 메서드를 활용하면 됩니다. 각 요소에 대해 키 값을 더하거나 뺀 결과가 원래 리스트에 존재하는지 확인하고, 존재하지 않는 경우에만 결과 리스트에 추가하는 방식입니다.

예제

아래는 실제 동작 예시입니다.

my_list = [91, 13, 19, 25, 35, 3, 9, 11, 0]

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

my_key = 2
print("The key is ")
print(my_key)

my_result = []

for element in my_list:
    if element + my_key not in my_list and element - my_key not in my_list:
        my_result.append(element)

print("The resultant list is :")
print(my_result)

출력

The list is :
[91, 13, 19, 25, 35, 3, 9, 11, 0]
The key is
2
The resultant list is :
[91, 19, 25, 35, 3, 0]

코드 설명

  • 먼저 리스트를 정의하고 콘솔에 출력합니다.
  • 키 값을 정의하고 콘솔에 출력합니다.
  • 결과를 저장할 빈 리스트를 생성합니다.
  • 리스트를 순회하면서 각 요소에 대해 (요소 + 키)와 (요소 - 키)가 원래 리스트에 존재하는지 확인합니다.
  • 두 값 모두 리스트에 없다면, 해당 요소는 다른 어떤 요소와도 키 거리 이내에 있지 않다는 의미이므로 결과 리스트에 추가(append)합니다.
  • 최종 결과 리스트를 콘솔에 출력합니다.

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

동일한 로직은 리스트 컴프리헨션(list comprehension)을 사용하면 한 줄로 표현할 수 있습니다.

my_result = [element for element in my_list
             if element + my_key not in my_list and element - my_key not in my_list]

이 방식은 코드 길이가 짧아질 뿐만 아니라 가독성도 높여 주기 때문에 실무에서 더 널리 사용되는 패턴입니다. 다만 리스트가 매우 클 경우 in 연산이 선형 탐색으로 동작하므로, 성능이 중요하다면 집합(set)으로 변환해 조회 속도를 개선하는 것도 좋은 방법입니다.