Thời gian đọc: 4 phút
sorted()
và sort()
Python cung cấp hai cách để sắp xếp các phần tử của một danh sách hoặc chuỗi phần tử: hàm sorted()
và phương thức sort()
. Cả hai đều được sử dụng để sắp xếp các phần tử, nhưng chúng khác nhau ở một vài khía cạnh quan trọng.
sorted()
: Là một hàm tích hợp của Python có thể sắp xếp bất kỳ iterable (chuỗi, danh sách, tuple, v.v.), trả về một danh sách mới chứa các phần tử đã được sắp xếp mà không làm thay đổi danh sách ban đầu.sort()
: Là phương thức của đối tượng kiểu danh sách (list
) và chỉ có thể áp dụng cho danh sách. Nó sắp xếp danh sách tại chỗ, tức là thay đổi danh sách ban đầu mà không tạo ra một bản sao.sorted()
sorted(iterable, key=None, reverse=False)
iterable
: Đối tượng có thể lặp lại được (như danh sách, tuple, chuỗi, v.v.).key
(tùy chọn): Hàm được sử dụng để xác định tiêu chí sắp xếp. Mặc định là None
.reverse
(tùy chọn): Nếu True
, danh sách sẽ được sắp xếp theo thứ tự giảm dần. Mặc định là False
.# Sắp xếp một danh sách số nguyên
numbers = [5, 2, 9, 1, 5, 6]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # Kết quả: [1, 2, 5, 5, 6, 9]
# Danh sách ban đầu không thay đổi
print(numbers) # Kết quả: [5, 2, 9, 1, 5, 6]
Sử dụng tham số reverse=True
để sắp xếp theo thứ tự giảm dần.
numbers = [5, 2, 9, 1, 5, 6]
sorted_desc = sorted(numbers, reverse=True)
print(sorted_desc) # Kết quả: [9, 6, 5, 5, 2, 1]
key
Tham số key
cho phép bạn chỉ định một hàm để sắp xếp các phần tử dựa trên tiêu chí tùy chỉnh.
# Sắp xếp danh sách chuỗi theo độ dài
words = ["apple", "banana", "cherry", "date"]
sorted_words = sorted(words, key=len)
print(sorted_words) # Kết quả: ['date', 'apple', 'banana', 'cherry']
Hàm sorted()
cũng có thể sắp xếp các phần tử của một tuple.
tuple_data = (3, 1, 2)
sorted_tuple = sorted(tuple_data)
print(sorted_tuple) # Kết quả: [1, 2, 3]
sort()
list.sort(key=None, reverse=False)
key
và reverse
hoạt động tương tự như trong hàm sorted()
.list
) và không trả về danh sách mới mà thay đổi trực tiếp danh sách ban đầu.numbers = [5, 2, 9, 1, 5, 6]
numbers.sort()
print(numbers) # Kết quả: [1, 2, 5, 5, 6, 9]
Sử dụng tham số reverse=True
để sắp xếp danh sách theo thứ tự giảm dần.
numbers = [5, 2, 9, 1, 5, 6]
numbers.sort(reverse=True)
print(numbers) # Kết quả: [9, 6, 5, 5, 2, 1]
key
# Sắp xếp danh sách chuỗi theo độ dài
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)
print(words) # Kết quả: ['date', 'apple', 'banana', 'cherry']
sorted()
và sort()
Đặc điểm | sorted() | sort() |
---|---|---|
Đối tượng | Bất kỳ iterable nào | Chỉ áp dụng cho danh sách (list ) |
Thay đổi danh sách gốc | Không, tạo ra danh sách mới | Có, sắp xếp tại chỗ |
Kết quả trả về | Danh sách đã sắp xếp mới | None (danh sách ban đầu bị thay đổi) |
Khả năng sử dụng | Đa dụng hơn, có thể dùng với tuple, chuỗi, v.v. | Chỉ dùng được cho danh sách |
sorted()
hay sort()
?sorted()
khi bạn không muốn làm thay đổi danh sách ban đầu hoặc khi cần sắp xếp các kiểu iterable khác ngoài danh sách.sort()
khi bạn chỉ cần sắp xếp danh sách và không quan tâm đến việc thay đổi danh sách ban đầu.Cả sorted()
và sort()
đều là những công cụ mạnh mẽ trong Python để sắp xếp dữ liệu. Nếu bạn muốn giữ nguyên dữ liệu gốc, sorted()
là lựa chọn tốt hơn. Nếu bạn muốn sắp xếp trực tiếp và tiết kiệm bộ nhớ, hãy sử dụng sort()
.