tuples

2017-07-17 27 views
6
की एक सरणी के लिए ढेर कुंजी परिभाषित

python heap implementation के उपयोग के लिए एक साधारण उदाहरणtuples

>>> from heapq import heappush, heappop 
>>> heap = [] 
>>> data = [1, 3, 5, 7, 9, 2, 4, 6, 8, 0] 
>>> for item in data: 
     heappush(heap, item) 

एक और अधिक जटिल परिदृश्य में है, मैं की तरह

tuples = [(5,"foo",True),(2,"bar", False),(8,"foobar",True)] 

tuples की एक सरणी है और चाहते हैं प्रत्येक टुपल की पहली प्रविष्टि को ढेर कुंजी के रूप में उपयोग करने के लिए, यानी टुपल्स को ढेर द्वारा टुपल्स में संख्या के अनुसार सॉर्ट किया जाना चाहिए।

मैं यह कैसे कर सकता हूं?

उत्तर

4

आप बस टुपल का उपयोग कर सकते हैं जैसे वे हैं। Python documentation explicitly makes note जैसे उपयोग:

हीप तत्व टुपल्स हो सकते हैं।

>>> h = [] 
>>> heappush(h, (5, 'write code')) 
>>> heappush(h, (7, 'release product')) 
>>> heappush(h, (1, 'write spec')) 
>>> heappush(h, (3, 'create tests')) 
>>> heappop(h) 
(1, 'write spec') 

सीधे शब्दों में ढेर करने के लिए tuples धक्का, और उन्हें बंद पॉप जब जरूरत:: यह पता लगाया जा रहा मुख्य रिकॉर्ड के साथ (जैसे कार्य प्राथमिकताओं के रूप में) तुलना मान निर्दिष्ट के लिए उपयोगी है

>>> from heapq import heappush, heappop 
>>> 
>>> heap = [] 
>>> tuples = [(5,"foo",True),(2,"bar", False),(8,"foobar",True)] 
>>> 
>>> for tup in tuples: 
...  heappush(heap, tup) 
... 
>>> heappop(heap) 
(2, 'bar', False) 

क्योंकि the implementation for heap tuples के लिए

while pos > startpos: 
    ... 
    if newitem < parent: 
     ... 
    ... 
... 

और अजगर tuples तत्व के लिहाज से सॉर्ट करता, एन छँटाई डिफ़ॉल्ट का उपयोग करता है सुनिश्चित करें कि जिन वस्तुओं से आप टुपल्स को सॉर्ट करना चाहते हैं, पहले आते हैं।