Saltar al contenido

Introducción al módulo Python Heapq

septiembre 24, 2021
1KHgBZzUUu7kYU834C7X5hA

Introducción al módulo Python Heapq

Una introducción simple sobre cómo usar el módulo heapq de Python

Vijini Mallawaarachchi

6 de mayo de 2020·4 min de lectura

8 estructuras de datos comunes que todo programador debe conocer

Las estructuras de datos son un medio especializado para organizar y almacenar datos en computadoras de tal manera que podamos realizar …

haciadatascience.com

1*KHgBZzUUu7kYU834C7X5hA

Imagen de Karen Arnold en Pixabay

Funciones de Heapq

Ejemplo de tutorial de Heapq con tipos de datos primitivos

import heapq
>>> a = [52, 94, 13, 77, 41]
>>> heapq.heapify(a)
>>> print(a)
[13, 41, 52, 77, 94]
>>> heapq.heappush(a,10)
>>> print(a)
[10, 41, 13, 77, 94, 52]
>>> print(heapq.heappop(a))
10
>>> print(a)
[13, 41, 52, 77, 94]
>>> print(heapq.heappushpop(a,28))
13
>>> print(a)
[28, 41, 52, 77, 94]
>>> print(heapq.heapreplace(a,3))
28
>>> print(a)
[3, 41, 52, 77, 94]

¿Cómo usar objetos en Heapq?

class DataWrap:

def __init__(self, data):
self.data = data

def __lt__(self, other):
return len(self.data) < len(other.data)
# Create list of strings
my_strings = ["write", "go", "run", "come"]
# Initialising
sorted_strings = []
# Wrap strings and push to heap
for s in my_strings:
heapObj = DataWrap(s)
heapq.heappush(sorted_strings, heapObj)
# Print the heap
for myObj in sorted_strings:
print(myObj.data, end="t")
go	come	run	write

Implementación de Max Heap usando Heapq

class DataWrap:

def __init__(self, data):
self.data = data

def __lt__(self, other):
return len(self.data) > len(other.data)
# Create list of strings
my_strings = ["write", "go", "run", "come"]
# Initialising
sorted_strings = []
# Wrap strings and push to heap
for s in my_strings:
heapObj = DataWrap(s)
heapq.heappush(sorted_strings, heapObj)
# Print the heap
for myObj in sorted_strings:
print(myObj.data, end="t")
write	come	run	go

Pensamientos finales

Referencias

close