Overview:
- The merge() function takes multiple Python iterables as parameters.
- For the merge() function to work correctly each of the input sequence should be in sorted order.
Example:
# Example Python program that merges multiple sorted sequences # into one import heapq
# Create sorted sequences sequence1 = [1,2,3]; # A list sequence2 = (5,7,9); # A tuple sequence3 = {6,8,10}; # A set
# Merge the sequences merged = heapq.merge(sequence1, sequence2, sequence3);
# Print the merged sequences print("The merged sequence:"); for item in merged: print(item); |
Output:
The merged sequence: 1 2 3 5 6 7 8 9 10 |
Example – With reverse comparisons:
import heapq
# Iterables s1 = ('e', 'c', 'a'); s2 = ('f', 'd', 'b');
# Sort by specifying reversing each comparison while sorting sorted = heapq.merge(s1, s2, reverse=True); for element in sorted: print(element); |
Output:
f e d c b a |
Example - Merge using a function that returns a comparison key:
# Example Python program that merges elements from two iterables # using the merge function and a comparison key function import heapq
# Circuit class definition class Circuit:
def __init__(self, name, distance): self.name = name self.distance = distance
# Create sorted lists of circuit instances c0 = Circuit("Circuit0", 10) c1 = Circuit("Circuit1", 30) c2 = Circuit("Circuit2", 40) i1 = [c0, c1, c2]
c3 = Circuit("Circuit3", 15) c4 = Circuit("Circuit4", 25) c5 = Circuit("Circuit5", 35) i2 = [c3, c4, c5]
# Key function used for comparison while sorting def keyfunc(circuit): return circuit.distance
# Merge elements from two Python iterables whose elements are already in sorted order merged = heapq.merge(i1, i2, key=keyfunc)
# Print the merged sequence print("Merged sequence:") for item in merged: print(item.distance)
|
Output:
Merged sequence: 10 15 25 30 35 40 |