Heim >Backend-Entwicklung >Python-Tutorial >Gibt es einen Heap in Python?

Gibt es einen Heap in Python?

(*-*)浩
(*-*)浩Original
2019-08-01 10:10:392728Durchsuche

Heap (englisch: heap) ist die Sammelbezeichnung für eine spezielle Art von Datenstruktur in der Informatik

Gibt es einen Heap in Python?

Definition von Heap: Folge von n Elementen { k1,k2,ki,…,kn} Genau dann, wenn die folgende Beziehung erfüllt ist, spricht man von einem Heap. (Empfohlenes Lernen: Python-Video-Tutorial)

"ki<=k2i,ki<=k2i+1;或ki>=k2i,ki>=k2i+1.(i=1,2,…,[n/2])"

Dies ist die Standarddefinition von Heap, aber es gibt keinen unabhängigen Heap-Typ in Python, es ist nur ein Modul, das einige enthält Heap-Operationsfunktionen (Heapq = der erste Buchstabe von Heap + Warteschlange). Tatsächlich ist Heap eine spezielle Art von Liste in Python.

Eine kurze Einführung in die Methoden in Heapq

import heapq
1.heapq.heappush(heap,item)  #heap为定义堆,item 增加的元素;
eg.
  heap=[]
  heapq.heappush(heap, 2)
2.heapq.heapify(list)        #将列表转换为堆
eg.
   list=[5,8,0,3,6,7,9,1,4,2]
   heapq.heapify(list) 
3.heapq.heappop(heap)        #删除最小的值
eg.
  heap=[2, 4, 3, 5, 7, 8, 9, 6]
  heapq.heappop(heap) ---->heap=[3, 4, 5, 7, 9, 6, 8]
4.heapq.heapreplace(heap, item)     #删除最小元素值,添加新的元素值
eg.
  heap=[2, 4, 3, 5, 7, 8, 9, 6]
  heapq.heapreplace(heap, 11) ------>heap=[2, 3, 4, 6, 8, 5, 7, 9, 11]
5.heapq.heappushpop(heap, item)     #首判断添加元素值与堆的第一个元素值对比,如果大于则删除最小元素,然后添加新的元素值,否则不更改堆
eg.
   条件:item >heap[0]
   heap=[2, 4, 3, 5, 7, 8, 9, 6]
   heapq.heappushpop(heap, 9)---->heap=[3, 4, 5, 6, 8, 9, 9, 7]
   条件:item
   heap=[2, 4, 3, 5, 7, 8, 9, 6]
   heapq.heappushpop(heap, 9)---->heap=[2, 4, 3, 5, 7, 8, 9, 6]
6.heapq.merge(...)             #将多个堆合并
7.heapq.nlargest (n, heap)     #查询堆中的最大元素,n表示查询元素个数
eg.
  heap=[2, 3, 5, 6, 4, 8, 7, 9]
  heapq.nlargest (1, heap)--->[9]
8.heapq.nsmallest(n, heap)     #查询堆中的最小元素,n表示查询元素个数
eg.
 heap=[2, 3, 5, 6, 4, 8, 7, 9]
 heapq.nlargest (1, heap)--->[2]

Weitere technische Artikel zum Thema Python finden Sie in der Spalte Python-Tutorial, um mehr zu erfahren!

Das obige ist der detaillierte Inhalt vonGibt es einen Heap in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn