Python program to insert an element into sorted list
Inserting an element into a sorted list while maintaining the order is a common task in Python. It can be efficiently performed using built-in methods or custom logic. In this article, we will explore different approaches to achieve this.
Using bisect.insort
bisect
module provides the insort
function which inserts an element into a sorted list at the correct position, bisect.insort
and performs a binary search to find the correct position which makes it more efficient than manual iteration.
import bisect
a = [1, 3, 4, 7, 10]
# Insert 5 into the list
bisect.insort(a, 5)
print(a)
Output
[1, 3, 4, 5, 7, 10]
Let's explore some methods to insert an element into sorted list.
Table of Content
Using Loop
This approach involves manually iterating through the list to find the appropriate position for the new element and then using the insert
method.
# Sorted list
a = [2, 5, 8, 12]
b = 10
# Find the correct position
for i in range(len(a)):
if b < a[i]:
a.insert(i, b)
break
else:
lst.append(b)
print(a)
Output
[2, 5, 8, 10, 12]
Using List Comprehension
List comprehension can be combined with slicing to create a new sorted list with the element inserted. This method separates the list into parts based on comparison and combines them with the new element.
a = [3, 6, 9, 15]
# Element to insert
b = 8
# Insert element and create new list
new_lst = [x for x in a if x < b] + [b] + [x for x in a if x >= b]
print(new_lst)
Output
[3, 6, 8, 9, 15]
Using Sorting After Appending
The element is appended to the list and then the list is sorted to restore order. Sorting ensures the list remains ordered after insertion. It is used for simplicity when list size is small.
a = [4, 7, 11, 14]
# Append and sort
a.append(9)
a.sort()
print(a)
Output
[4, 7, 9, 11, 14]