Python: Insertion Sort I am a beginner in python and to learn python I have written this program. How can this code be improved? Should I use main method in this program? Python

lst = []

def insertion_sort(thelist):
    for index in range(1, len(thelist)):
        key = thelist[index]
        position = index - 1
        while position &gt;= 0 and thelist[position] &gt; key:
            thelist[position + 1] = thelist[position]
            position = position - 1
        thelist[position + 1] = key

n = int(input("Enter number of elements: "))
for i in range(0, n):
    ele = int(input())
    lst.append(ele)

insertion_sort(lst)
print(*lst, sep = ", ")
There is a much simpler method in Python to do an insertion sort using the 
bisect.insort method 

import bisect
array = [1,3,5,7]
bisect.insort_left(array, 2)

&gt;&gt;[1, 2, 3, 5, 7]


With regard to your coding style, I would recommend using the if __name__ == "__main__" guard.

You can also just say for i in range(n) with no need to say (0, n)

You can also use list-comprehension to build the list:

import bisect
def insertion_sort(thelist):
    new_list = []
    for item in thelist:
        bisect.insort_left(new_list, item)
    return new_list


if __name__ == "__main__":
    n = int(input("Enter number of elements: "))
    lst = [input("Please enter a number: ") for i in range(n)]
    new_list = insertion_sort(lst)
    print(*new_list, sep = ", ")