Sự khác nhau giữa sorted() và sort() trong Python
Trong Python, việc sắp xếp dữ liệu chủ yếu dựa vào hai công cụ: sorted() và list.sort().
Hai hàm này có cùng mục đích nhưng cách hoạt động khác nhau. Dưới đây là phân tích chi tiết.
1. Hàm sorted()
sorted() là hàm toàn cục có thể sắp xếp tất cả các kiểu dữ liệu dạng iterable như list, tuple, string, set, dict.
Đặc điểm:
- Không làm thay đổi dữ liệu gốc
- Trả về một danh sách mới
Cú pháp
sorted(iterable, *, key=None, reverse=False)
| Tham số | Ý nghĩa |
|---|---|
iterable | Dữ liệu cần sắp xếp |
key | Hàm xác định tiêu chí sắp xếp |
reverse | Đặt True để sắp xếp giảm dần |
Ví dụ
numbers = [4, 2, 9, 1]
print(sorted(numbers))
# [1, 2, 4, 9]
print(sorted(numbers, reverse=True))
# [9, 4, 2, 1]
print(sorted(["python", "ai", "chatgpt"], key=len))
# ['ai', 'python', 'chatgpt']
2. Phương thức list.sort()
sort() là phương thức dành riêng cho list và sắp xếp trực tiếp trên danh sách ban đầu.
Đặc điểm:
- Làm thay đổi dữ liệu gốc
- Không tạo danh sách mới
- Trả về
None
Cú pháp
list.sort(*, key=None, reverse=False)
| Tham số | Ý nghĩa |
|---|---|
key | Hàm xác định quy tắc sắp xếp |
reverse | Đặt True để sắp xếp giảm dần |
Ví dụ
numbers = [4, 2, 9, 1]
numbers.sort()
print(numbers)
# [1, 2, 4, 9]
numbers.sort(reverse=True)
print(numbers)
# [9, 4, 2, 1]
words = ["python", "ai", "chatgpt"]
words.sort(key=len)
print(words)
# ['ai', 'python', 'chatgpt']
3. Bảng so sánh nhanh
| Tiêu chí | sorted() | list.sort() |
|---|---|---|
| Loại | Hàm toàn cục | Phương thức của list |
| Kết quả | Tạo list mới | Sắp xếp trực tiếp |
| Ảnh hưởng dữ liệu gốc | Không ảnh hưởng | Thay đổi dữ liệu |
| Áp dụng cho | Mọi iterable | Chỉ list |
| Tốc độ | Chậm hơn vì tạo bản sao | Nhanh hơn |
4. Ví dụ so sánh trực tiếp
a = [3, 1, 4]
# Dùng sorted()
b = sorted(a)
print("a =", a) # giữ nguyên
print("b =", b) # list mới
# Dùng sort()
a.sort()
print("a sau sort() =", a)
5. Khi nào nên dùng?
Dùng sorted() khi:
- Cần giữ nguyên dữ liệu gốc
- Sắp xếp tuple, string, set hoặc dict
- Cần tính toán mà không làm thay đổi dữ liệu
Dùng sort() khi:
- Làm việc với list lớn
- Không cần giữ thứ tự ban đầu
- Muốn tối ưu tốc độ
Hiểu rõ sự khác biệt giữa sorted() và sort() giúp lập trình Python hiệu quả, hạn chế lỗi và tối ưu hiệu năng.
Nhận xét
Đăng nhận xét