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]