리스트에서 '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)으로 변환해 조회 속도를 개선하는 것도 좋은 방법입니다.