Sort vs Sorted in Python

Posted by Afsal on 04-Mar-2022

Hi Pythonistas!

Today we are going to learn about the difference between sort and sorted in Python.

Consider the below example. 

Using sort function

import random
import timeit

def sort_function():
   a = list(range(1000_000_0))
   random.shuffle(a)
   return a.sort()

time_taken = timeit.timeit(sort_function, number=1)
print(“Time taken by sort function: ”, time_taken)

Output

Time taken by sort function: 10.273957031000009

Using sorted function

import random
import timeit

def sorted_function():
    a = list(range(1000_000_0))
    random.shuffle(a)
    return sorted(a)

time_taken = timeit.timeit(sorted_function, number=1)
print(“Time taken by sorted function: ”,time_taken)

Output

Time taken by sorted function: 10.785021954000058

The Reason

The sort function takes In-place and the sorting does not require any additional memory or copying of the elements to a new list.

Whereas the sorted function sorts in a newly created list. Extra time is taken for the allocation and copying of elements to the list.

Let’s try to replicate the behavior of sorted by copying the new list and doing the sort function on the new list.

Using under the hood function

def sorted_function_under_the_hood():
    a = list(range(1000_000_0))
    random.shuffle(a)
    b = a.copy()
    return b.sort()

time_taken = timeit.timeit(sorted_function_under_the_hood, number=1)
print(“Time take by the under the hood function: ”, time_taken)

output

Time take by the under the hood function: 10.700373989000127

We can see that the time taken by sorted and the underhood function are very close.

Comparison summary

Function name Pros Cons
Sort

faster

No additional memory

Work only for list

Cannot be used if we need to maintain the order of input

Sorted

Work for any iterable

Doesn't affect the input

Slower

Additional memory required

 

Use the sort or sorted function according to your datatype.

Hope you have learned something from this post. Please share your valuable feedback to afsal@parseltongue.co.in