Sorting lists in Python can be done in two main ways: using the sort() method for in-place sorting or the sorted() function for creating a sorted copy of the list. Both options allow for efficient and flexible sorting with customization options.
sort()The sort() method sorts a list in-place, meaning it rearranges the elements within the original list and does not return a new list. This method only works on lists and modifies them directly.
list.sort(reverse=False, key=None)
reverse: A boolean value. If set to True, the list is sorted in descending order; otherwise, it’s sorted in ascending order (the default).key: A function that acts as a sorting key, often used to sort by specific attributes or customized sorting logic.numbers = [5, 2, 9, 1]
numbers.sort() # Sorts in ascending order
print(numbers) # Output: [1, 2, 5, 9]
# Sort in descending order
numbers.sort(reverse=True)
print(numbers) # Output: [9, 5, 2, 1]
key Parameter:The key parameter allows for complex sorting, such as sorting by the length of strings or by an attribute in a list of objects.
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)
print(words) # Output: ['date', 'apple', 'banana', 'cherry']
sorted()The sorted() function returns a new sorted list and leaves the original list unmodified, which can be beneficial when you need to maintain the original order.
sorted(iterable, reverse=False, key=None)
iterable: Any iterable, not just lists (e.g., tuples, dictionaries, etc.).reverse and key parameters function the same as in sort().numbers = [3, 1, 4, 2]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Output: [1, 2, 3, 4]
print(numbers) # Original list remains: [3, 1, 4, 2]
dict_values = {'a': 3, 'b': 1, 'c': 2}
sorted_by_value = sorted(dict_values.items(), key=lambda item: item[1])
print(sorted_by_value) # Output: [('b', 1), ('c', 2), ('a', 3)]
sort() and sorted():sort() modifies the list in-place and only works with lists.sorted() works with any iterable and returns a new sorted list.