Lesson 4
Exploring the sorted Function
Lesson Introduction

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.

Basic Usage: Part 1

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.

Basic Usage: Part 2

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]
Sorting a List of Objects Based on a Field (Part 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.

Sorting a List of Objects Based on a Field (Part 2)

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)]
Lesson Summary

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.

Enjoy this lesson? Now it's time to practice with Cosmo!
Practice is how you turn knowledge into actual skills.