4 ms·
heapq.merge assumes the passed iterators are already sorted and will sort the iterators as is, so you can expect to get different results from some inputs to th
by thezilch 14y ago
heapq.merge assumes the passed iterators are already sorted and will sort the iterators as is, so you can expect to get different results from some inputs to the examples in #1 and #2 [0]. Of course, if you simply call sorted on the the heapq results (#1), you will get the same result as #2 [1]. As well, without a final sort of either merge-example, you will get different results [2].
[0]
> list(heapq.merge([3, 2, 1], [3], [2, 3], [4, 5], [0, 1, 2]))
[0, 1, 2, 2, 3, 2, 1, 3, 3, 4, 5]
> sorted(itertools.chain([3, 2, 1], [3], [2, 3], [4, 5], [0, 1, 2]))
[0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5]
[1]
> sorted(heapq.merge([3, 2, 1], [3], [2, 3], [4, 5], [0, 1, 2]))
[0, 1, 1, 2, 2, 2, 3, 3, 3, 4, 5]
[2]
> list(itertools.chain([3, 2, 1], [3], [2, 3], [4, 5], [0, 1, 2]))
[3, 2, 1, 3, 2, 3, 4, 5, 0, 1, 2]
> list(heapq.merge([3, 2, 1], [3], [2, 3], [4, 5], [0, 1, 2]))
[0, 1, 2, 2, 3, 2, 1, 3, 3, 4, 5]