Lesson 4

Sorting is a fundamental operation in data processing and algorithms. Whether you're organizing a list of names, arranging numerical data, or ordering objects by attributes, sorting helps you manage and analyze data efficiently. Today, we're exploring the ** sorted** function in Python. By the end of this lesson, you will understand how to use the sorted function to sort data in various ways, leveraging its powerful and flexible features.

Let's start with the basics. The `sorted`

function returns a new list containing all items from the original iterable in ascending order. It doesn't modify the original list but returns a sorted result.

Here's a simple example:

Python`1if __name__ == "__main__": 2 numbers = [5, 1, 9, 3, 7] 3 sorted_numbers = sorted(numbers) 4 print("Sorted numbers (ascending):", sorted_numbers) # Output: [1, 3, 5, 7, 9]`

In this code, we define a `numbers`

list and use the `sorted`

function to sort it in ascending order.

To sort in descending order, set the `reverse`

parameter to `True`

in the `sorted`

function:

Python`1if __name__ == "__main__": 2 numbers = [5, 1, 9, 3, 7] 3 sorted_numbers_desc = sorted(numbers, reverse=True) 4 print("Sorted numbers (descending):", sorted_numbers_desc) # Output: [9, 7, 5, 3, 1]`

When dealing with a list of objects, you can sort the objects based on a specific attribute using the `key`

parameter in `sorted`

.

Here's how you can sort students by their ages:

Python`1class Student: 2 def __init__(self, name, age): 3 self.name = name 4 self.age = age 5 6 def __repr__(self): 7 return f"{self.name} ({self.age})" 8 9if __name__ == "__main__": 10 students = [Student("Alice", 26), Student("Bob", 22), Student("Charlie", 23)] 11 sorted_students = sorted(students, key=lambda student: student.age) 12 print("Students sorted by age:", sorted_students) # Output: [Bob (22), Charlie (23), Alice (26)]`

In this example, the `key`

parameter is set to a lambda function that extracts the `age`

attribute from each `Student`

object. The `sorted`

function uses the values returned by this lambda function to sort the list of students.

To handle ties when sorting by one attribute, return a tuple from the `key`

function where the first element is the primary sort key and subsequent elements are tie-breakers. For example, sort students by age and name:

Python`1if __name__ == "__main__": 2 class Student: 3 def __init__(self, name, age): 4 self.name = name 5 self.age = age 6 7 def __repr__(self): 8 return f"{self.name} ({self.age})" 9 10 students = [Student("Alice", 22), Student("Bob", 22), Student("Charlie", 23)] 11 sorted_students = sorted(students, key=lambda student: (student.age, student.name)) 12 print("Students sorted by age and name:", sorted_students) # Output: [Alice (22), Bob (22), Charlie (23)]`

In this lesson, we've explored the versatile `sorted`

function in Python. You now understand how to:

- Sort lists in ascending and descending order.
- Sort lists of objects based on attributes.
- Handle ties with multiple sort keys.

The `sorted`

function is powerful and flexible, making it essential in any Python programmer's toolkit. Next, you will get hands-on practice to solidify your understanding and improve your coding skills.