खोज…


एक संग्रह में सबसे बड़ा और सबसे छोटा आइटम

किसी संग्रह में सबसे बड़ी वस्तुओं को खोजने के लिए, heapq मॉड्यूल में एक फ़ंक्शन nlargest , जिसे हम सबसे nlargest कहते हैं, हम इसे दो तर्क देते हैं, पहला वह आइटम है जिसे हम पुनः प्राप्त करना चाहते हैं, दूसरा संग्रह नाम है:

import heapq


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

इसी तरह, एक संग्रह में सबसे छोटी वस्तुओं को खोजने के लिए, हम nsmallest फ़ंक्शन का उपयोग nsmallest हैं:

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

दोनों nlargest और nsmallest कार्यों जटिल डेटा संरचनाओं के लिए एक वैकल्पिक तर्क (प्रमुख पैमाना) ले लो। निम्न उदाहरण people शब्दकोश से सबसे पुराने और सबसे कम उम्र के लोगों को पुनः प्राप्त करने के लिए age संपत्ति के उपयोग को दर्शाता है:

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