수색…


컬렉션의 가장 큰 항목과 가장 작은 항목

모음에서 가장 큰 항목을 찾으려면, heapq 모듈은 함수 호출이 nlargest 우리는 첫 번째는 우리가 검색 할 항목의 수는 두 개의 인수를 전달, 두 번째 컬렉션 이름은 다음과 같습니다

import heapq


numbers = [1, 4, 2, 100, 20, 50, 32, 200, 150, 8]
print(heapq.nlargest(4, numbers))  # [200, 150, 100, 50]

마찬가지로 컬렉션에서 가장 작은 항목을 찾으려면 nsmallest 함수를 사용합니다.

print(heapq.nsmallest(4, numbers))  # [1, 2, 4, 8]

nlargestnsmallest 함수는 모두 복잡한 데이터 구조에 선택적 인수 (키 매개 변수)를 사용합니다. 다음 예제는 age 속성을 사용하여 people 사전에서 가장 오래된 사람과 가장 젊은 사람을 검색하는 방법을 보여줍니다.

people = [
    {'firstname': 'John', 'lastname': 'Doe', 'age': 30},
    {'firstname': 'Jane', 'lastname': 'Doe', 'age': 25},
    {'firstname': 'Janie', 'lastname': 'Doe', 'age': 10},
    {'firstname': 'Jane', 'lastname': 'Roe', 'age': 22},
    {'firstname': 'Johnny', 'lastname': 'Doe', 'age': 12},
    {'firstname': 'John', 'lastname': 'Roe', 'age': 45}
]

oldest = heapq.nlargest(2, people, key=lambda s: s['age'])
print(oldest)
# Output: [{'firstname': 'John', 'age': 45, 'lastname': 'Roe'}, {'firstname': 'John', 'age': 30, 'lastname': 'Doe'}]

youngest = heapq.nsmallest(2, people, key=lambda s: s['age'])
print(youngest)
# Output: [{'firstname': 'Janie', 'age': 10, 'lastname': 'Doe'}, {'firstname': 'Johnny', 'age': 12, 'lastname': 'Doe'}]

컬렉션에서 가장 작은 항목

heap 의 가장 흥미로운 특성은 가장 작은 요소가 항상 첫 번째 요소라는 것입니다. heap[0]

import heapq


numbers = [10, 4, 2, 100, 20, 50, 32, 200, 150, 8]

heapq.heapify(numbers)
print(numbers)
# Output: [2, 4, 10, 100, 8, 50, 32, 200, 150, 20]

heapq.heappop(numbers)  # 2
print(numbers)
# Output: [4, 8, 10, 100, 20, 50, 32, 200, 150]

heapq.heappop(numbers)  # 4
print(numbers)
# Output:  [8, 20, 10, 100, 150, 50, 32, 200]


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow