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

Python – 극단값의 차이가 K보다 큰 리스트 추출하기

리스트 내 요소들의 최댓값과 최솟값(극단값)의 차이가 특정 값 K보다 큰 경우에 해당하는 리스트만 추출해야 할 때가 있습니다. 이러한 작업은 리스트 컴프리헨션(list comprehension)과 파이썬의 내장 함수인 min(), max()를 함께 사용하면 간단하게 해결할 수 있습니다.

아래에서 실제 동작 예시를 살펴보겠습니다.

예제 코드

my_list = [[13, 52, 11], [94, 12, 21], [23, 45, 23], [11, 16, 21]]

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

key = 40

my_result = [element for element in my_list if max(element) - min(element) > key]

print("The result is :")
print(my_result)

실행 결과

The list is :
[[13, 52, 11], [94, 12, 21], [23, 45, 23], [11, 16, 21]]
The result is :
[[13, 52, 11], [94, 12, 21]]

코드 설명

  • 먼저 중첩 리스트(리스트 안에 여러 개의 리스트가 포함된 구조)를 정의하고 콘솔에 출력합니다.

  • 기준이 되는 임계값 K(key)를 정의합니다. 이 예제에서는 40으로 설정했습니다.

  • 리스트 컴프리헨션을 사용하여 원본 리스트의 각 하위 리스트를 순회하면서, 각 요소에 대해 max(element) - min(element)로 최댓값과 최솟값의 차이를 계산하고 이 값이 key보다 큰지 비교합니다.

  • 조건을 만족하는 요소들만 모아 새로운 리스트로 만든 뒤, 그 결과를 변수 my_result에 할당합니다.

  • 마지막으로 필터링된 결과를 콘솔에 출력합니다.

결과 분석

실행 결과를 보면 [13, 52, 11]은 최댓값 52와 최솟값 11의 차이가 41로 40보다 크고, [94, 12, 21]은 94 − 12 = 82로 조건을 만족하므로 결과에 포함됩니다. 반면 [23, 45, 23]은 차이가 22, [11, 16, 21]은 차이가 10으로 조건에 맞지 않아 제외되었습니다.

이 방식은 코드가 한 줄로 간결하며 가독성이 뛰어나, 데이터 필터링 작업에서 널리 활용됩니다. 만약 데이터 양이 매우 크다면 제너레이터 표현식을 사용하여 메모리 사용량을 줄일 수도 있습니다.