SORTED VÀ SORT TRONG PYTHON

Sự khác nhau giữa sorted()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()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
iterableDữ liệu cần sắp xếp
keyHà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
keyHà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ạiHàm toàn cụcPhương thức của list
Kết quảTạo list mớiSắp xếp trực tiếp
Ảnh hưởng dữ liệu gốcKhông ảnh hưởngThay đổi dữ liệu
Áp dụng choMọi iterableChỉ list
Tốc độChậm hơn vì tạo bản saoNhanh 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()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