Python - Sort Lists
Sorting Lists in Python
Sorting a list in Python is a way to arrange the elements of the list in either ascending or descending order based on a defined criterion, such as numerical or lexicographical order.
This can be achieved using the built-in sorted() function or by calling the sort() method on the list itself, both of which modify the original list or return a new sorted list depending on the method used.
Sorting Lists Using sort() Method
The python sort() method is used to sort the elements of a list in place. This means that it modifies the original list and does not return a new list.
Syntax
The syntax for using the sort() method is as follows −
list_name.sort(key=None, reverse=False)
Where,
- list_name is the name of the list to be sorted.
- key (optional) is a function that defines the sorting criterion. If provided, it is applied to each element of the list for sorting. Default is None.
- reverse (optional) is a boolean value. If True, the list will be sorted in descending order. If False (default), the list will be sorted in ascending order.
Example of Sorting List in Lexicographical Order
In the following example, we are using the sort() function to sort the items of the list alphanumerically −
list1 = ['physics', 'Biology', 'chemistry', 'maths']
print ("list before sort:", list1)
list1.sort()
print ("list after sort : ", list1)
It will produce the following output −
list before sort: ['physics', 'Biology', 'chemistry', 'maths']
list after sort : ['Biology', 'chemistry', 'maths', 'physics']
Example of Sorting List in Numerical Order
In here, we are using the sort() function to sort the given list in numerical order −
list2 = [10,16, 9, 24, 5]
print ("list before sort", list2)
list2.sort()
print ("list after sort : ", list2)
The output produced is as shown below −
list before sort [10, 16, 9, 24, 5]
list after sort : [5, 9, 10, 16, 24]
Sorting Lists Using sorted() Method
The sorted() function in Python is a built-in function used to sort the elements of an iterable (such as a list, tuple, or string) and returns a new sorted list, leaving the original iterable unchanged.
Syntax
The syntax for using the sorted() method is as follows −
sorted(iterable, key=None, reverse=False)
Where,
- iterable is the iterable (e.g., list, tuple, string) whose elements are to be sorted.
- key (optional) is a function that defines the sorting criterion. If provided, it is applied to each element of the iterable for sorting. Default is None.
- reverse (optional) is a boolean value. If True, the iterable will be sorted in descending order. If False (default), the iterable will be sorted in ascending order.
Example
In the following example, we are using the sorted() function to sort a list of numbers and retrieve a new sorted list −
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
# Sorting in descending order
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)
Following is the output of the above code −
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
Sorting List Items with Callback Function
In Python, a callback function refers to a function that is passed as an argument to another function and is invoked or called within that function
We can sort list items with a callback function by using the sorted() function or sort() function in Python. Both of these functions allows us to specify a custom sorting criterion using the “key” parameter, which accepts a callback function. This callback function defines how the elements should be compared and sorted.
Example Using str.lower() as key Parameter
The str.lower() method in Python is used to convert all the characters in a string to lowercase. It returns a new string with all alphabetic characters converted to lowercase while leaving non-alphabetic characters unchanged.
In this example, we are passing the str.lower() method as an argument to the “key” parameter within the sort() function −
list1 = ['Physics', 'biology', 'Biomechanics', 'psychology']
print ("list before sort", list1)
list1.sort(key=str.lower)
print ("list after sort : ", list1)
It will produce the following output −
list before sort ['Physics', 'biology', 'Biomechanics', 'psychology']
list after sort : ['biology', 'Biomechanics', 'Physics', 'psychology']
Example Using user-defined Function as key Parameter
We can also use a user-defined function as the key parameter in sort() method.
In this example, the myfunction() uses % operator to return the remainder, based on which the sorting is performed −
def myfunction(x):
return x%10
list1 = [17, 23, 46, 51, 90]
print ("list before sort", list1)
list1.sort(key=myfunction)
print ("list after sort : ", list1)
It will produce the following output −
list before sort [17, 23, 46, 51, 90]
list after sort: [90, 51, 23, 46, 17]