Python Sorting
Sort data efficiently using sort and sorted functions.
Master sorting techniques.
Basic Sorting
```python numbers = [5, 2, 8, 1, 9]
Sort in place numbers.sort() print(numbers) # [1, 2, 5, 8, 9]
Create sorted copy numbers = [5, 2, 8, 1, 9] sorted_nums = sorted(numbers) print(sorted_nums) # [1, 2, 5, 8, 9] print(numbers) # [5, 2, 8, 1, 9] (unchanged) ```
Reverse Order
```python numbers = [5, 2, 8, 1, 9]
numbers.sort(reverse=True) print(numbers) # [9, 8, 5, 2, 1] ```
Custom Sorting
```python # Sort by string length words = ["apple", "hi", "banana", "kiwi"] words.sort(key=len) print(words) # ['hi', 'kiwi', 'apple', 'banana']
Sort by absolute value numbers = [-5, 3, -2, 8, -1] numbers.sort(key=abs) print(numbers) # [-1, -2, 3, -5, 8] ```
Sort Complex Data
```python students = [ {"name": "Tom", "grade": 85}, {"name": "Sarah", "grade": 92}, {"name": "Mike", "grade": 78} ]
Sort by grade students.sort(key=lambda s: s["grade"], reverse=True)
for student in students: print(f"{student['name']}: {student['grade']}") # Sarah: 92 # Tom: 85 # Mike: 78 ```
Multiple Sort Keys
```python data = [ ("Tom", 25, "Austin"), ("Sarah", 25, "Miami"), ("Mike", 30, "Denver") ]
Sort by age, then name data.sort(key=lambda x: (x[1], x[0])) print(data) ```
Operator Module
```python from operator import itemgetter, attrgetter
Sort by index data = [(2, "b"), (1, "a"), (3, "c")] data.sort(key=itemgetter(0)) print(data) # [(1, 'a'), (2, 'b'), (3, 'c')] ```
Remember
- sort() modifies list - sorted() returns new list - Use key for custom sorting