Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Sự khác biệt giữa sort() và sorted() trong Python
Python cung cấp sẵn các phương thức để sắp xếp, giúp bạn dễ dàng sắp xếp bất kỳ một chuỗi (sequence) nào. Sắp xếp là thao tác sắp xếp lại các phần tử của một chuỗi theo thứ tự nhất định. Python có hai hàm chính là sort()
và sorted()
, đều dùng để sắp xếp nhưng với một số khác biệt nhất định. Hãy cùng tìm hiểu cách sử dụng chúng.
Hàm sort()
trong Python
Hàm sort()
thực hiện sắp xếp trực tiếp trên danh sách ban đầu, nghĩa là nó sẽ thay đổi danh sách gốc và không trả về giá trị nào. Hàm này chỉ áp dụng cho các đối tượng kiểu danh sách (list) vì nó là phương thức của lớp list. Mặc định, sort()
sắp xếp các phần tử theo thứ tự tăng dần.
Cú pháp:
list_name.sort(key, reverse=False)
Hàm có hai tham số tùy chọn:
- key: Là một hàm xác định tiêu chí sắp xếp.
- reverse: Mặc định là
False
(sắp xếp tăng dần). Nếu đặtTrue
, danh sách sẽ được sắp xếp theo thứ tự giảm dần.
Ví dụ minh họa:
Bài viết này được đăng tại [free tuts .net]
Sắp xếp không có tham số
colors = ['Black', 'Purple', 'Green', 'Yellow', 'Orange'] colors.sort() print("Danh sách sau khi sắp xếp:", colors)
Kết quả:
Danh sách sau khi sắp xếp: ['Black', 'Green', 'Orange', 'Purple', 'Yellow']
Sắp xếp với tham số reverse
colors.sort(reverse=True) print("Danh sách sắp xếp theo thứ tự giảm dần:", colors)
Kết quả:
Danh sách sắp xếp theo thứ tự giảm dần: ['Yellow', 'Purple', 'Orange', 'Green', 'Black']
Sắp xếp với tham số key
def length(color): return len(color) colors.sort(key=length) print("Danh sách sắp xếp theo độ dài:", colors) colors.sort(key=length, reverse=True) print("Danh sách sắp xếp theo độ dài (giảm dần):", colors)
Kết quả:
Danh sách sắp xếp theo độ dài: ['Black', 'Green', 'Purple', 'Yellow', 'Orange'] Danh sách sắp xếp theo độ dài (giảm dần): ['Purple', 'Yellow', 'Orange', 'Black', 'Green']
Trong ví dụ này, danh sách được sắp xếp theo độ dài của các từ theo thứ tự tăng dần và giảm dần.
Hàm sorted()
trong Python
Hàm sorted()
không thay đổi chuỗi gốc và trả về một danh sách mới đã được sắp xếp. Hàm này có thể sử dụng với mọi chuỗi như danh sách, tuple, chuỗi ký tự, hoặc bất kỳ iterable nào khác. Mặc định, sorted()
sắp xếp các phần tử theo thứ tự tăng dần.
Cú pháp:
sorted(iterable, key, reverse=False)
Hàm có ba tham số (trong đó hai là tùy chọn):
- iterable: Một chuỗi có thể là danh sách, tuple, chuỗi, hoặc bất kỳ iterator nào khác.
- key: Là một hàm xác định tiêu chí sắp xếp.
- reverse: Mặc định là
False
. Đặt làTrue
nếu muốn sắp xếp giảm dần.
Ví dụ minh họa:
Sắp xếp với tham số iterable
colors = ('Black', 'Purple', 'Green', 'Yellow', 'Orange') print("Danh sách sau khi sắp xếp:", sorted(colors))
Kết quả:
Danh sách sau khi sắp xếp: ['Black', 'Green', 'Orange', 'Purple', 'Yellow']
Sắp xếp với tham số reverse
print("Danh sách sắp xếp theo thứ tự giảm dần:", sorted(colors, reverse=True))
Kết quả:
Danh sách sắp xếp theo thứ tự giảm dần: ['Yellow', 'Purple', 'Orange', 'Green', 'Black']
Sắp xếp với tham số key
def length(color): return len(color) print("Danh sách sắp xếp theo độ dài:", sorted(colors, key=length)) print("Danh sách sắp xếp theo độ dài (giảm dần):", sorted(colors, key=length, reverse=True))
Kết quả:
Danh sách sắp xếp theo độ dài: ['Black', 'Green', 'Purple', 'Yellow', 'Orange'] Danh sách sắp xếp theo độ dài (giảm dần): ['Purple', 'Yellow', 'Orange', 'Black', 'Green']
Trong ví dụ này, sorted()
tạo ra một danh sách mới dựa trên độ dài của các phần tử.
Ghi chú:
Hàm sorted()
tạo bản sao của đối tượng gốc khi thực hiện sắp xếp, do đó, nó sẽ tạo ra một chi phí xử lý bổ sung so với hàm sort()
. Vì vậy, sort()
sẽ nhanh hơn sorted()
trong trường hợp bạn chỉ làm việc với danh sách và muốn sắp xếp trực tiếp trên danh sách gốc.
Kết bài
Bài viết này giúp bạn hiểu sự khác biệt và tương đồng giữa sort()
và sorted()
trong Python. Bạn có thể sử dụng sort()
nếu muốn thao tác nhanh hơn và sẵn sàng thay đổi danh sách gốc. Nếu bạn muốn giữ nguyên dữ liệu ban đầu và cần một bản sao đã sắp xếp, sorted()
là lựa chọn phù hợp hơn.