English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En esta sección, veremos cómo usar el módulo heapq de Python para combinar dos listas ordenadas. Por ejemplo, si list1 = [10,20,30,40] y además list2 = [100,200,300,400,500],合并后则返回list3 = [10,20,30,40,100, 200、300、400、500]
Para realizar esta tarea, utilizaremos el módulo heapq. Este módulo se incluye con Python como módulo de biblioteca estándar. Por lo tanto, necesitamos importarlo antes de usarlo.
import heapq
El módulo heapq tiene algunas propiedades. Estas son:-
Método heapq.heapify(iterable)
Se utiliza para convertir un conjunto iterable de datos en una estructura de datos de pila.
Método heapq.heappush(heap, element)
Este método se utiliza para insertar un elemento en la pila. Después de eso, rehace toda la estructura de la pila.
Método heapq.heappop(heap)
Este método se utiliza para devolver y eliminar un elemento de la parte superior de la pila y realizar heapify en el resto de los elementos.
Método heapq.heappushpop(heap, element)
Este método se utiliza para insertar y extraer elementos en una sola declaración.
Método heapq.heapreplace(heap, element)
Este método se utiliza para insertar y extraer elementos en una sola declaración. Elimina un elemento de la raíz de la pila y lo inserta en la pila.
Método heapq.nlargest(n, iterable, key=None)
Este método se utiliza para devolver n elementos más grandes de la pila.
Método heapq.nsmallest(n, iterable, key=None)
Este método se utiliza para devolver n elementos más pequeños de la pila.
import heapq first_list = [45, 12, 63, 95, 74, 21, 20, 15, 36] second_list = [42, 13, 69, 54, 15] first_list = sorted(first_list) second_list = sorted(second_list) print('Primera lista ordenada: ',) + str(first_list)) print('Segunda lista ordenada: ',) + str(second_list)) final_list = list(heapq.merge(first_list, second_list)) print('La lista final: ',) + str(final_list))
Resultado de salida
Primera lista ordenada: [12, 15, 20, 21, 36, 45, 63, 74, 95] Segunda lista ordenada: [13, 15, 42, 54, 69] La lista final: [12, 13, 15, 15, 20, 21, 36, 42, 45, 54, 63, 69, 74, 95]