Table of content:
- What Is the Python sort() List Method?
- Sorting In Ascending Order Using The Python sort() List Method
- How To Sort Items In Descending Order Using Python sort() List Method
- Custom Sorting Using The Key Parameter Of Python sort() List Method
- Examples Of Python sort() List Method
- What Is The sorted() List Method In Python
- Differences Between sorted() And sort() List Methods In Python
- When To Use sorted() & When To Use sort() List Method In Python
- Conclusion
- Frequently Asked Questions
Python List sort() | All Use Cases Explained (+Code Examples)
In Python, lists are ordered, mutable collections that store data of any type. Sorting is a crucial operation when you need to organize your data in a specific order, such as ascending or descending. The sort() method is a powerful tool for arranging elements of a list directly and modifying the list in place. Whether you're working with numbers, strings, or more complex structures, sort() makes it easy to organize data.
In this article, we’ll explore the Python sort() list method, its syntax, usage, and how it compares to the sorted() function, giving you the tools to sort lists efficiently.
What Is the Python sort() List Method?
The sort() method is a built-in Python function specifically designed for sorting lists in place. This means that it arranges the elements of a list in a defined order (either ascending or descending), modifying the original list rather than creating a new one.
The sort() method in Python programming can sort lists containing numbers, strings, or any objects that have a defined comparison order. It’s a handy tool when you need to maintain the order of items in a list but organize them according to a specific criterion.
Here’s a quick breakdown of what makes sort() useful:
- In-place sorting: It sorts the list without creating a new one. The list is directly modified.
- Sorting options: You can sort in ascending or descending order.
- Custom sorting: It allows you to define custom sorting criteria using the key parameter, which can be especially useful for more complex data.
In the following sections, we'll break down how to use the sort() method, explore its syntax and parameters, and show how you can use it for different kinds of sorting tasks.
Syntax of Python sort() List Method
list.sort(key=None, reverse=False)
Python sort() List Method Parameters
The sort() method accepts two optional parameters:
key: The key parameter allows you to define a custom sorting criterion by passing a function.
- This function is applied to each element before sorting.
- If you don’t specify a key, Python will use the elements themselves for sorting.
- Example: If you have a list of strings and want to sort based on their lengths, you can use the key parameter with len.
reverse: The reverse parameter is a boolean that determines the sort order.
- By default, it’s set to False, meaning the list is sorted in ascending order.
- Setting it to True sorts the list in descending order.
These parameters provide flexibility to sort lists based on custom rules or in the opposite order, making the sort() function in Python more adaptable to your needs.
Python sort() List Method Return Value
The sort() method modifies the original list and does not return a new list. In fact, it returns None, which is an important distinction compared to the sorted() function, which returns a new sorted list.
This in-place sorting is more memory efficient since it doesn’t create a duplicate list. Instead, the existing list is rearranged according to the specified sorting order.
Also read: Python List | Everything You Need To Know (With Detailed Examples)
Sorting In Ascending Order Using The Python sort() List Method
By default, the Python sort() list method sorts a list in ascending order, meaning the smallest values (for numbers) or the lexicographically first items (for strings) come first. This is the most common way to sort a list when you want the elements arranged from the lowest to the highest.
How it works: When you call the sort() method without any parameters, it will automatically sort the list in ascending order. The simple Python program example below illustrates the same.
Code Example:
I0NyZWF0aW5nIGEgbGlzdApudW1iZXJzID0gWzQsIDIsIDksIDEsIDVdCgojQ2FsbGluZyB0aGUgc29ydCgpIGZ1bmN0aW9uCm51bWJlcnMuc29ydCgpCgpwcmludChudW1iZXJzKQ==
Output:
[1, 2, 4, 5, 9]
Code Explanation:
In the simple Python code example:
- We begin by creating a list, numbers, with five integer values.
- Then, we call the sort() method on the numbers list. It rearranges the list elements in ascending order, with the smallest number 1 at the front and the largest number 9 at the end.
- The function directly modifies the list, which we then display using the print() function.
How To Sort Items In Descending Order Using Python sort() List Method
To sort a list in descending order (from highest to lowest), you can use the reverse=True parameter in the sort() method. This tells Python to sort the list in reverse order, meaning larger values come first.
How it works: By adding the reverse=True parameter, you change the sorting order from ascending to descending. The basic Python program example below illustrates the same.
Code Example:
bnVtYmVycyA9IFs0LCAyLCA5LCAxLCA1XQoKI0NhbGxpbmcgc29ydCgpIG1ldGhvZCB3aXRoIHJldmVyc2UgcGFyYW1ldGVyIHNldCB0byBUcnVlCm51bWJlcnMuc29ydChyZXZlcnNlPVRydWUpCgpwcmludChudW1iZXJzKQ==
Output:
[9, 5, 4, 2, 1]
Code Example:
In the basic Python code example:
- We create a list, numbers and then call sort() function on it.
- Here, we set the reverse parameter to True, and as a result, the method sorts the list in descending order. The largest number, 9, comes first, followed by 5, 4, and so on.
- Then, we print it to the console to show descended sorting.
Check out this amazing course to become the best version of the Python programmer you can be.
Custom Sorting Using The Key Parameter Of Python sort() List Method
One of the powerful features of the sort() method is the ability to specify a custom/ user-defined sorting criterion through the key parameter. This allows you to sort your list based on any function or rule you define rather than just the default order.
How it works: The key parameter accepts a function (or other callable) that takes a single argument and returns a value to be used for sorting purposes.
- This function is applied to each element in the iterable before the sorting operation.
- By default, if no key is provided, Python will use the element itself for comparison (like how numbers are sorted numerically or strings lexicographically).
This functionality is particularly useful in more complex scenarios like sorting lists of objects by specific attributes or sorting strings in a custom order. In this section, we will explore the various ways we can customise Python’s sort() list method using the key parameter.
Sorting Strings By Length Using The Python sort() List Method
Let’s say we want to sort a list of words based on their length rather than their lexicographical order. In this case, you can pass the built-in len() function to the key parameter, which ensures that list elements are sort based on their length. The Python program example below illustrates the same.
Code Example:
d29yZHMgPSBbJ2FwcGxlJywgJ2JhbmFuYScsICdjaGVycnknLCAnZGF0ZSddCgojUGFzc2luZyB0aGUgbGVuKCkgZnVuY3Rpb24gYXMga2V5IHRvIHNvcnQgb24gYmFzaXMgb2YgZWxlbWVudCBsZW5ndGgKd29yZHMuc29ydChrZXk9bGVuKQoKcHJpbnQod29yZHMp
Output:
['date', 'apple', 'cherry', 'banana']
Code Explanation:
In this example:
- We first define a list– words, containing four string elements: ['apple', 'banana', 'cherry', 'date'].
- Then, we call the sort() function on it, passing the len() function as the key argument.
- This len() function calculates the length of each string/ word, which is used to sort the list.
- The result is a list sorted from the shortest word ('date') to the longest word ('banana').
Sorting Strings Case-Insensitively Using The Python sort() List Method
When sorting a list of strings in Python, the default behavior is case-sensitive, meaning uppercase letters are ordered before lowercase ones. However, in many situations, you may want to perform a case-insensitive sort, where 'apple' and 'Apple' are treated as equal.
- To achieve this, you can use the str.casefold() method, which is specifically designed to handle case-insensitive comparisons of strings, etc.
- It converts all characters to lowercase in a way that is more comprehensive than str.lower(), making it ideal for sorting strings regardless of their original casing.
Look at the Python code example below, which illustrates how this is done.
Code Example:
d29yZHMgPSBbJ2FwcGxlJywgJ0JhbmFuYScsICdjaGVycnknLCAnRGF0ZSddCgojVXNpbmcgc3RyLmNhc2Vmb2xkIHRvIGVuc3VyZSBjYXNlLWluc2Vuc2l0aXZlIHNvcnRpbmcKd29yZHMuc29ydChrZXk9c3RyLmNhc2Vmb2xkKQoKcHJpbnQod29yZHMp
Output:
['apple', 'Banana', 'cherry', 'Date']
Code Explanation:
In the example,
- We create a list that contains strings with mixed case: ['apple', 'Banana', 'cherry', 'Date'].
- Then, we call the sort() function on the list, passing the str.casefold() method as the key function.
- This method converts all string characters to lowercase before sorting, ensuring a case-insensitive order.
- The result is that strings are sorted without considering the case, with 'apple' coming first because it’s lexicographically the smallest when the case is ignored.
Sorting Tuples By Specific Element With The Python sort() List Method
When working with a list of tuples, sorting by specific elements inside the tuple can be extremely useful. For example, if you have a list of student records where each tuple contains a name, grade, and age, you might want to sort the list by age instead of name.
- One way to get this done with the Python sort() list method is to pass a lambda function as the key.
- The lambda function is ideal in this scenario. It allows you to define a function on the fly that extracts a specific element from each tuple to be used as the sorting key.
- By passing the lambda function to the key parameter, you can control which element of the tuple is used to determine the order.
This approach works particularly well when you need to sort complex data structures like tuples or lists of dictionaries, providing you with great flexibility in how you sort them. The example Python program below illustrates how this can be done.
Code Example:
c3R1ZGVudHMgPSBbKCdBYXJ0aScsICdBJywgMTUpLCAoJ1JhaicsICdCJywgMTIpLCAoJ1NpbXJhbicsICdCJywgMTApXQoKI1NvcnRpbmcgdGhlIGxpc3Qgb24gdGhlIGJhc2lzIG9mIHRoZSBhZ2UKc3R1ZGVudHMuc29ydChrZXk9bGFtYmRhIHN0dWRlbnQ6IHN0dWRlbnRbMl0pCgpwcmludChzdHVkZW50cyk=
Output:
[('Simran', 'B', 10), ('Raj', 'B', 12), ('Aarti', 'A', 15)]
Code Explanation:
In the example:
- We begin by defining a list of tuples called students, where each tuple contains a name, grade, and age.
- Then, we call the sort() function on this list and define a lambda function to pass as the key argument.
- The lambda function extracts the age (third element) from each tuple, and the list is sorted by age.
- This sorts the list in reference to the order of tuples by age in ascending order, starting from 10 years old (Dave) to 15 years old (John).
Sorting Using Multiple Criteria In The Python sort() List Method
Sorting by multiple criteria involves sorting a list based on more than one key parameter. This is useful in cases where you want a primary sorting criterion and a secondary criterion to break ties in the order.
- To do this, the key function can return a tuple, where each element in the tuple represents a separate sorting criterion.
- Python will first sort the list based on the first element of the tuple, and if there are ties, it will use the second element to break the tie.
- This process can continue with more elements if necessary.
This method allows you to perform complex multi-level sorting, making it an essential tool for handling sophisticated data structures and ensuring that your sorting behavior matches your specific needs. The example Python code below illustrates the same.
Code Example:
aXRlbXMgPSBbKCdhcHBsZScsIDIpLCAoJ2JhbmFuYScsIDEpLCAoJ2NoZXJyeScsIDIpLCAoJ2RhdGUnLCAxKV0KCiNTb3J0aW5nIHRoZSBsaXN0IHdpdGggbXVsdGlwbGUgY3JpdGVyaWEKaXRlbXMuc29ydChrZXk9bGFtYmRhIGl0ZW06IChpdGVtWzFdLCBpdGVtWzBdKSkKCnByaW50KGl0ZW1zKQ==
Output:
[('banana', 1), ('date', 1), ('apple', 2), ('cherry', 2)]
Code Explanation:
- We first define a list containing tuples where the first element is a fruit and the second element is a number.
- Then, we call the sort function, passing a lambda function as key argument.
- This function returns a tuple with two elements: the second element of each tuple (the number) and the first element (the fruit name).
- The list is first sorted by the number, and in case of a tie (same number), it is sorted by the fruit name.
- The result is that items are sorted first by their number, and then alphabetically by the fruit name when the numbers are the same.
Custom Key Functions In The Python sort() List Method
While Python libraries provide many built-in functions for sorting, you can also define your own custom functions to control how the elements in your list are compared.
- A custom key function allows you to implement more specific or complex sorting logic that isn’t covered by the default behavior.
- The custom function should take an element from the list as input and return a value that will be used for comparison.
- For example, you could create a custom function that sorts a list of tuples based on a specific element, or even by performing some transformation or calculation on each element before sorting.
Custom key functions provide maximum flexibility, allowing you to tailor the sorting behavior exactly to your needs, whether you’re sorting by complex criteria or applying specific rules to each element.
Code Example:
I0RlZmluaW5nIHRoZSBjdXN0b20ga2V5IGZ1bmN0aW9uCmRlZiBjdXN0b21fa2V5KGl0ZW0pOgogICAgcmV0dXJuIGl0ZW1bMV0gIyBTb3J0IGJ5IHRoZSBzZWNvbmQgZWxlbWVudAoKI0NyZWF0aW5nIGEgbGlzdCB3aXRoIHR1cGxlcwppdGVtcyA9IFsoJ2FwcGxlJywgMiksICgnYmFuYW5hJywgMSksICgnY2hlcnJ5JywgMyldCiNTb3J0aW5nIHRoZSBsaXN0IHVzaW5nIHRoZSBjdXN0b20ga2V5Cml0ZW1zLnNvcnQoa2V5PWN1c3RvbV9rZXkpCnByaW50KGl0ZW1zKQ==
Output:
[('banana', 1), ('apple', 2), ('cherry', 3)]
Code Explanation:
In this example:
- We define a custom function custom_key(), which returns the second element of each tuple in the list.
- When calling sort(), we pass custom_key as the key function.
- The list is sorted based on the second element of each tuple, resulting in the list being sorted from the smallest to the largest second element.
Level up your coding skills with the 100-Day Coding Sprint at Unstop and get the bragging rights now!
Examples Of Python sort() List Method
Let’s go through some practical examples to demonstrate how the sort() method works with different types of data.
Sorting List Numbers Using Python sort() List Method
Sorting a list of numbers is one of the most common use cases for the sort() method. By default, the list will be sorted in ascending order.
Example:
numbers = [8, 1, 3, 9, 5, 2]
numbers.sort() # Sort in ascending order
print(numbers) # Output: [1, 2, 3, 5, 8, 9]
Here, the sort() method rearranges the numbers in ascending order, from the smallest (1) to the largest (9).
Sorting Complex Data Structures Using Python sort() List Method
The sort() method is not limited to simple lists of numbers or strings. It can be used to sort more complex data structures, such as lists of tuples or dictionaries.
Example: Sorting a List of Tuples
Let’s say we have a list of tuples, and we want to sort them based on the second element of each tuple.
Code Example:
aXRlbXMgPSBbKCdhcHBsZScsIDIpLCAoJ2JhbmFuYScsIDEpLCAoJ2NoZXJyeScsIDMpXQoKI1NvcnRpbmcgdGhlIGxpc3Qgb2YgdHVwbGVzIGJhc2VkIG9uIHNlY29uZCBlbGVtZW50Cml0ZW1zLnNvcnQoa2V5PWxhbWJkYSB4OiB4WzFdKQoKI1ByaW50aW5nIHRoZSBzb3J0ZWQgbGlzdApwcmludChpdGVtcyk=
Output:
[('banana', 1), ('apple', 2), ('cherry', 3)]
Here, we use a lambda function to sort the list of tuples based on the second element. The list is sorted in ascending order by the numbers in each tuple.
Example: Sorting a List of Dictionaries
You can also sort a list of dictionaries based on a specific key in each dictionary.
Code Example:
I0NyZWF0aW5nIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMKc3R1ZGVudHMgPSBbeyduYW1lJzogJ0FqYXknLCAnYWdlJzogMjV9LCB7J25hbWUnOiAnQmlqYXknLCAnYWdlJzogMjJ9LCB7J25hbWUnOiAnRGlndmlqYXknLCAnYWdlJzogMjR9XQoKI1NvcnRpbmcgdGhlIGxpc3QgYnkgYWdlIGFzIGtleQpzdHVkZW50cy5zb3J0KGtleT1sYW1iZGEgeDogeFsnYWdlJ10pCgpwcmludChzdHVkZW50cyk=
Output:
[{'name': 'Bijay', 'age': 22}, {'name': 'Digvijay', 'age': 24}, {'name': 'Ajay', 'age': 25}]
In this example, the list of dictionaries is sorted based on the 'age' value in each dictionary, from the youngest to the oldest.
What Is The sorted() List Method In Python
While the sort() method is used to sort a list in place, sorted() is a built-in function that returns a new list containing the sorted elements. The original list remains unchanged, making it more suitable when you need to retain the original data and work with a sorted version of it.
The sorted() function can be used on any iterable (like lists, tuples, dictionaries, etc.), not just lists, and it also accepts the same parameters as sort() for customizing the sort order.
Syntax Of sorted() Function
sorted(iterable, key=None, reverse=False)
Parameters:
- iterable: The collection (list, tuple, dictionary, etc.) to be sorted. Unlike sort(), which can only be used with lists, sorted() works with any iterable.
- key (optional): A function that serves as a sorting criterion. By default, the elements themselves are sorted.
- reverse (optional): A boolean that determines whether the sorting should be in descending order (True) or ascending order (False, default).
Return Value: The function returns a new list containing the sorted elements of the given iterable without altering the original iterable.
Looking for guidance? Find the perfect mentor from select experienced coding & software development experts here.
Differences Between sorted() And sort() List Methods In Python
Both sort() and sorted() are used for sorting, but they have important differences that can influence how and when you should use them. Here’s a comparison table to highlight the key differences:
Feature |
sort() |
sorted() |
Return Value |
Modifies the list in place; returns None. |
Returns a new sorted list; the original remains unchanged. |
Usage |
Can only be used with lists. |
Can be used with any iterable (lists, tuples, strings, etc.). |
Modification |
Changes the original list. |
Does not modify the original iterable. |
Time Complexity |
O(n log n) |
O(n log n) |
Memory Usage |
Modifies the list in place, no additional space needed. |
Creates a new sorted list, consuming more memory. |
When To Use sorted() & When To Use sort() List Method In Python
Choosing between sort() and sorted() depends on whether you want to modify the original list or if you need a new sorted list. Here's a breakdown of when to use each:
1. When to Use sort():
- Modify the original list: If you don't need to retain the original order of the list, use sort(). It sorts the list in place and does not return a new list.
- When working with a list: The Python sort() list method is exclusive to lists, so it’s used when you specifically need to work with a list.
2. When to Use sorted():
- Preserve the original list: If you need to keep the original list unchanged and get a new sorted list, use sorted(). This function returns a new list while leaving the original one intact.
- For other iterables: The sorted() method works with any iterable, including tuples and strings, not just lists. It’s more versatile than sort() in that regard.
Example Of Using The sorted() Method
In the example below, we use the sorted() method to sort a list of numbers. Let’s see how this works.
Code Example:
bnVtYmVycyA9IFs4LCAzLCAxLCA1LCA5XQoKIyBVc2luZyBzb3J0ZWQoKSB0byBjcmVhdGUgYSBuZXcgc29ydGVkIGxpc3QKc29ydGVkX251bWJlcnMgPSBzb3J0ZWQobnVtYmVycykKCnByaW50KCJPcmlnaW5hbCBsaXN0OiIsIG51bWJlcnMpCnByaW50KCJTb3J0ZWQgd2l0aCBzb3J0ZWQoKToiLCBzb3J0ZWRfbnVtYmVycyk=
Output:
[8, 3, 1, 5, 9]
[1, 3, 5, 8, 9]
Here, the sorted() method returns a new sorted list without modifying the original numbers list. The original list remains unchanged, and a new sorted list is returned.
Conclusion
The Python sort() list method is an efficient way to sort a list in place. Its syntax is pretty straightforward and simple to use: list.sort(key=None, reverse=False).
- It allows you to sort lists in ascending or descending order and provides flexibility through the key parameter for custom sorting.
- The sort() method modifies the original list, making it a great choice when you don't need to preserve the original order.
- Its time complexity is O(n log n), making it efficient for most use cases.
- While sorted() offers a similar function, sort() remains the go-to option when working directly with lists and when memory efficiency is a concern.
With the Python sort() list method, you can easily handle sorting tasks in your Python programs, whether you're working with numbers, strings, or more complex data structures.
Frequently Asked Questions
Q1. How do you sort a list in Python?
In Python, you can sort a list using the sort() method, which sorts the list in place. For example:
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers) # Output: [1, 2, 5, 5, 6, 9]
Alternatively, you can use the sorted() function, which returns a new sorted list. For example:
numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Output: [1, 2, 5, 5, 6, 9]
Q2. Is sort() or sorted() better?
The choice between sort() and sorted() depends on your needs:
- sort(): Modifies the original list in place and returns None. It's more memory-efficient when you don't need to preserve the original list.
- sorted(): Returns a new sorted list and leaves the original list unchanged. It's useful when you need to keep the original list intact.
Q3. What does sort() mean in Python?
The sort() method in Python is a built-in function that sorts the elements of a list in ascending order by default. It modifies the list in place and does not return a new list.
Q4. What is list.sort() in Python?
The notation, list.sort() is the syntax for the sort() method available to list objects in Python. Here, list refer to the name of the list you want to sort, the sort() is the built-in Python function and the dot operator allows us to call the function on the specified list. The function sorts the elements of the list in place, meaning the original list is modified. It accepts two optional parameters: key and reverse.
Q5. Can sort() be used with other data types?
The sort() method is specifically designed for lists. If you need to sort other iterable types, such as tuples or dictionaries, you can use the sorted() function, which works with any iterable and returns a new sorted list.
Q6. What happens if the list contains different data types?
If a list contains elements of different data types, attempting to sort it using sort() or sorted() will raise a TypeError unless a custom sorting function is provided that can handle the comparisons.
Q7. How can I sort a list of tuples by the second element?
You can use the key parameter with a lambda function to specify the sorting criterion. For example:
my_list = [(1, 'one'), (3, 'three'), (2, 'two')]
my_list.sort(key=lambda x: x[1])
print(my_list) # Output: [(1, 'one'), (3, 'three'), (2, 'two')]
In this example, the Python sort() list method, sorts the input list based on the second element of each tuple.
Do check out the following for more amazing reads:
- Python List index() Method | Use Cases Explained (+Code Examples)
- Python String Concatenation In 10 Easy Ways Explained (+Examples)
- Nested List In Python | Initialize, Manipulate & Flatten (+Examples)
- Remove Item From Python List | 5 Ways & Comparison (+Code Examples)
- Remove Duplicates From Python List | 12 Ways With Code Examples
- Python input() Function (+Input Casting & Handling With Examples)
An economics graduate with a passion for storytelling, I thrive on crafting content that blends creativity with technical insight. At Unstop, I create in-depth, SEO-driven content that simplifies complex tech topics and covers a wide array of subjects, all designed to inform, engage, and inspire our readers. My goal is to empower others to truly #BeUnstoppable through content that resonates. When I’m not writing, you’ll find me immersed in art, food, or lost in a good book—constantly drawing inspiration from the world around me.
Login to continue reading
And access exclusive content, personalized recommendations, and career-boosting opportunities.
Subscribe
to our newsletter
Comments
Add comment