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

Python – 리스트 요소가 다른 리스트의 최소·최대 범위 안에 있는지 확인하는 방법

어떤 리스트의 모든 요소가 다른 리스트의 최솟값과 최댓값 사이에 속하는지 확인해야 하는 경우가 종종 있습니다. 이럴 때는 검사 대상 리스트의 요소를 하나씩 순회하면서, 각 요소가 기준 리스트의 최솟값 이상이고 최댓값 이하인지 차례로 비교하면 됩니다.

예제

아래 예제를 통해 실제 동작 과정을 살펴보겠습니다.

my_list = [5, 6, 4, 7, 8, 13, 15]
print("기준 리스트 :")
print(my_list)

range_list = [4, 7, 10, 6]

my_result = True
for elem in range_list:
    if not (min(my_list) <= elem <= max(my_list)):
        my_result = False
        break

if my_result:
    print("모든 요소가 최소/최대 범위 안에 있습니다")
else:
    print("범위를 벗어나는 요소가 있습니다")

출력 결과

기준 리스트 :
[5, 6, 4, 7, 8, 13, 15]
모든 요소가 최소/최대 범위 안에 있습니다

코드 설명

  • 먼저 기준이 되는 리스트를 정의하고 콘솔에 출력합니다.

  • 범위 검사를 수행할 정수 리스트를 하나 더 정의합니다.

  • 검사 결과를 저장할 변수를 'True'로 초기화합니다.

  • 정수 리스트의 값을 하나씩 순회하며, 해당 값이 기준 리스트의 최솟값보다 작거나 최댓값보다 크면 결과 변수를 'False'로 설정합니다.

  • 범위를 벗어나는 요소를 발견하면 break 문으로 반복문을 즉시 종료하여 불필요한 연산을 줄입니다.

  • 마지막으로 결과 변수가 'True'인지 확인한 후, 그에 맞는 메시지를 콘솔에 출력합니다.

더 간결한 방법: all() 함수 활용하기

반복문 대신 내장 함수 all()과 제너레이터 표현식을 사용하면 위 로직을 한 줄로 표현할 수 있습니다.

my_result = all(min(my_list) <= elem <= max(my_list) for elem in range_list)

이 방식은 가독성이 뛰어나고, 조건을 만족하지 않는 첫 번째 요소에서 평가를 중단하므로 성능 면에서도 효율적입니다. 상황에 따라 any() 함수를 응용해 특정 조건을 만족하는 요소의 존재 여부만 확인하는 것도 가능합니다.