Сообщить об ошибке.

Функция merge() модуля heapq в Python

Объединить несколько отсортированных последовательностей

Синтаксис:

import heapq

heapq.merge(*iterables, key=None, reverse=False)

Параметры:

  • *iterables - итерируемые [последовательности]type-sequence],
  • key=None - ключевая функция, принимающая один аргумент,
  • reverse=False - bool, порядок сортировки.

Возвращаемое значение:

Описание:

Функция merge() модуля heapq объединяет несколько отсортированных последовательностей *iterables в один отсортированный итератор. Например, объединить записи с метками времени из нескольких файлов журнала. Возвращает итератор для отсортированных значений.

Функция heapq.merge() ведет себя аналогично sorted как функция itertools.chain(*iterables), но возвращает итерируемую последовательность, не извлекает сразу данные в память и предполагает, что каждый из входных потоков iterables уже отсортирован от наименьшего к наибольшему.

Имеет два необязательных аргумента, которые должны быть указаны как ключевые аргументы.

  • Аргумент key определяет ключевую функцию, принимающую один аргумент, которая используется для извлечения ключа сравнения из каждого входного элемента. Значением по умолчанию является None, что означает сравнение элементов напрямую.
  • Аргумент reverse - это логическое значение. Если установлено значение True, то входные элементы объединяются, как если бы каждое сравнение было обратным. Чтобы добиться поведения, подобного сортированному itertools.chain(*iterables), reverse=True, все итерируемые элементы должны быть отсортированы от наибольшего к наименьшему.

Примеры использования:

>>> import heapq
>>> first_list = sorted([45, 12, 63, 95])
>>> second_list = sorted([42, 13, 69, 54, 15])
>>> first_list
# [12, 45, 63, 95]
>>> second_list
# [13, 15, 42, 54, 69]
>>> final_list = list(heapq.merge(first_list, second_list))
>>> final_list
# [12, 13, 15, 42, 45, 54, 63, 69, 95]