Python | Combining two sorted lists

• Difficulty Level : Basic
• Last Updated : 25 Nov, 2022

Many times we encounter a problem where we wish to use the merge function of merge sort anwhichs a classical problem that occurs many times while doing competitive programming. This type of problem when the own shorter and more compact ways to perform them are always quite handy. Let’s discuss certain ways of combining two sorted lilistsn Python.

Method #1: Naive Method Merge operation of merge sort can be performed using the naive method which has also been discussed earlier. We check for the smaller of two elements on the current index and increment the index of the list whose no. is encountered. When either of the lists gets exhausted, the other list is appended to the end of the merged list.

Python3

 `# Python3 code to demonstrate``# to combine two sorted list``# using naive method` `# initializing lists``test_list1 ``=` `[``1``, ``5``, ``6``, ``9``, ``11``]``test_list2 ``=` `[``3``, ``4``, ``7``, ``8``, ``10``]` `# printing original lists``print``(``"The original list 1 is : "` `+` `str``(test_list1))``print``(``"The original list 2 is : "` `+` `str``(test_list2))` `# using naive method``# to combine two sorted lists``size_1 ``=` `len``(test_list1)``size_2 ``=` `len``(test_list2)` `res ``=` `[]``i, j ``=` `0``, ``0` `while` `i < size_1 ``and` `j < size_2:``    ``if` `test_list1[i] < test_list2[j]:``        ``res.append(test_list1[i])``        ``i ``+``=` `1` `    ``else``:``        ``res.append(test_list2[j])``        ``j ``+``=` `1` `res ``=` `res ``+` `test_list1[i:] ``+` `test_list2[j:]` `# printing result``print``(``"The combined sorted list is : "` `+` `str``(res))`

Output

```The original list 1 is : [1, 5, 6, 9, 11]
The original list 2 is : [3, 4, 7, 8, 10]
The combined sorted list is : [1, 3, 4, 5, 6, 7, 8, 9, 10, 11]
```

Method #2 : Using sorted() This function can be used to perform this task in just a 1 line but will take more time internally. It may have more time complexity as we append one list to another and again sort the resultant list. Should be used if we need to save the coding time.

Python3

 `# Python3 code to demonstrate``# to combine two sorted list``# using sorted()` `# initializing lists``test_list1 ``=` `[``1``, ``5``, ``6``, ``9``, ``11``]``test_list2 ``=` `[``3``, ``4``, ``7``, ``8``, ``10``]` `# printing original lists``print` `(``"The original list 1 is : "` `+` `str``(test_list1))``print` `(``"The original list 2 is : "` `+` `str``(test_list2))` `# using sorted()``# to combine two sorted lists``res ``=` `sorted``(test_list1 ``+` `test_list2)` `# printing result``print` `(``"The combined sorted list is : "` `+` `str``(res))`

Output

```The original list 1 is : [1, 5, 6, 9, 11]
The original list 2 is : [3, 4, 7, 8, 10]
The combined sorted list is : [1, 3, 4, 5, 6, 7, 8, 9, 10, 11]
```

Method #3 : Using heapq.merge() Python also offers the inbuilt function to perform this particular task and performs the similar working in background as merge in naive method and should be used when wanting to deal with this kind of problem.

Python3

 `# Python3 code to demonstrate``# to combine two sorted list``# using heapq.merge()``from` `heapq ``import` `merge` `# initializing lists``test_list1 ``=` `[``1``, ``5``, ``6``, ``9``, ``11``]``test_list2 ``=` `[``3``, ``4``, ``7``, ``8``, ``10``]` `# printing original lists``print``(``"The original list 1 is : "` `+` `str``(test_list1))``print``(``"The original list 2 is : "` `+` `str``(test_list2))` `# using heapq.merge()``# to combine two sorted lists``res ``=` `list``(merge(test_list1, test_list2))` `# printing result``print``(``"The combined sorted list is : "` `+` `str``(res))`

Output

```The original list 1 is : [1, 5, 6, 9, 11]
The original list 2 is : [3, 4, 7, 8, 10]
The combined sorted list is : [1, 3, 4, 5, 6, 7, 8, 9, 10, 11]
```

Method #4 : Using extend() and sort() methods

Python3

 `# Python3 code to demonstrate``# to combine two sorted list` `# initializing lists``test_list1 ``=` `[``1``, ``5``, ``6``, ``9``, ``11``]``test_list2 ``=` `[``3``, ``4``, ``7``, ``8``, ``10``]` `# printing original lists``print``(``"The original list 1 is : "` `+` `str``(test_list1))``print``(``"The original list 2 is : "` `+` `str``(test_list2))` `test_list1.extend(test_list2)``test_list1.sort()` `# printing result``print``(``"The combined sorted list is : "` `+` `str``(test_list1))`

Output

```The original list 1 is : [1, 5, 6, 9, 11]
The original list 2 is : [3, 4, 7, 8, 10]
The combined sorted list is : [1, 3, 4, 5, 6, 7, 8, 9, 10, 11]
```

My Personal Notes arrow_drop_up