Trong Python, bạn có thể sắp xếp dữ liệu bằng cách sử dụng sorted()
phương pháp hoặc sort()
phương pháp.
Trong bài viết này, tôi sẽ cung cấp các ví dụ mã cho sorted()
và sort()
phương pháp và giải thích sự khác biệt giữa hai phương pháp.
Phương thức sort() trong Python là gì?
Phương pháp này lấy một danh sách và sắp xếp nó tại chỗ. Phương thức này không có giá trị trả về.
Trong ví dụ này, chúng tôi có một danh sách các số và chúng tôi có thể sử dụng sort()
phương pháp sắp xếp danh sách theo thứ tự tăng dần.
my_list = [67, 2, 999, 1, 15]
# this prints the unordered list
print("Unordered list: ", my_list)
# sorts the list in place
my_list.sort()
# this prints the ordered list
print("Ordered list: ", my_list)

Nếu danh sách đã được sắp xếp thì nó sẽ trả về Không có trong bảng điều khiển.
my_list = [6, 7, 8, 9, 10]
# this will return None because the list is already sorted
print(my_list.sort())

Các sort()
phương thức có thể nhận hai đối số tùy chọn được gọi là key
và reverse
.
key
có giá trị của một hàm sẽ được gọi trên mỗi mục trong danh sách.
Trong ví dụ này, chúng ta có thể sử dụng len()
đóng vai trò là giá trị của key
tranh luận. key=len
sẽ yêu cầu máy tính sắp xếp danh sách tên theo độ dài từ nhỏ nhất đến lớn nhất.
names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"]
print("Unsorted: ", names)
names.sort(key=len)
print("Sorted: ", names)

reverse
có một giá trị boolean của True
hoặc False
.
Trong ví dụ này, reverse=True
sẽ yêu cầu máy tính sắp xếp danh sách theo thứ tự bảng chữ cái đảo ngược.
names = ["Jessica", "Ben", "Carl", "Jackie", "Wendy"]
print("Unsorted: ", names)
names.sort(reverse=True)
print("Sorted: ", names)

Cách sử dụng phương thức sorted() trong Python
Phương thức này sẽ trả về một danh sách được sắp xếp mới từ một lần lặp. Ví dụ về các lần lặp sẽ là danh sách, chuỗi và bộ dữ liệu.
Một điểm khác biệt chính giữa sort()
và sorted()
đó là sorted()
sẽ trả về một danh sách mới trong khi sort()
sắp xếp danh sách tại chỗ.
Trong ví dụ này, chúng ta có một danh sách các số sẽ được sắp xếp theo thứ tự tăng dần.
sorted_numbers = sorted([77, 22, 9, -6, 4000])
print("Sorted in ascending order: ", sorted_numbers)

Các sorted()
phương pháp cũng có trong tùy chọn key
và reverse
tranh luận.
Trong ví dụ này, chúng ta có một danh sách các số được sắp xếp theo thứ tự giảm dần. reverse=True
yêu cầu máy tính đảo ngược danh sách từ lớn nhất sang nhỏ nhất.
sorted_numbers = sorted([77, 22, 9, -6, 4000], reverse=True)
print("Sorted in descending order: ", sorted_numbers)

Một sự khác biệt quan trọng khác giữa sorted()
và sort()
nó có phải là sorted()
phương thức chấp nhận bất kỳ lần lặp nào trong khi phương thức sort()
phương pháp chỉ hoạt động với danh sách.
Trong ví dụ này, chúng tôi có một chuỗi được chia thành các từ riêng lẻ bằng cách sử dụng split()
phương pháp. Sau đó, chúng tôi sử dụng sorted()
để sắp xếp các từ theo độ dài từ nhỏ nhất đến lớn nhất.
my_sentence = "Jessica found a dollar on the ground"
print("Original sentence: ", my_sentence)
print(sorted(my_sentence.split(), key=len))

Chúng tôi cũng có thể sửa đổi ví dụ này và bao gồm key
và reverse
tranh luận.
Ví dụ sửa đổi này bây giờ sẽ sắp xếp danh sách từ lớn nhất đến nhỏ nhất.
my_sentence = "Jessica found a dollar on the ground"
print("Original sentence: ", my_sentence)
print(sorted(my_sentence.split(), key=len, reverse=True))

Chúng ta cũng có thể sử dụng sorted()
phương pháp trên tuples
.
Trong ví dụ này, chúng tôi có một bộ sưu tập các tuples
đại diện cho tên, tuổi và nhạc cụ của học sinh trong ban nhạc.
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
Chúng ta có thể sử dụng sorted()
phương pháp sắp xếp dữ liệu này theo tuổi của học sinh. Các key
có giá trị của một lambda
chức năng yêu cầu máy tính sắp xếp theo độ tuổi theo thứ tự tăng dần.
Một lambda
chức năng là một chức năng ẩn danh không có tên. Bạn có thể xác định loại chức năng này bằng cách sử dụng lambda
từ khóa.
lambda student: student[1]
Để truy cập một giá trị trong một tuple
, bạn sử dụng ký hiệu ngoặc và số chỉ mục bạn muốn truy cập. Vì chúng ta bắt đầu đếm từ 0, nên giá trị tuổi sẽ là [1]
.
Đây là ví dụ hoàn chỉnh.
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
print(sorted(band_students, key=lambda student: student[1]))

Thay vào đó, chúng ta có thể sửa đổi ví dụ này và sắp xếp dữ liệu theo công cụ. chúng ta có thể sử dụng reverse
để sắp xếp các nhạc cụ theo thứ tự bảng chữ cái đảo ngược.
band_students = [
('Danny', 17, 'Trombone'),
('Mary', 14, 'Flute'),
('Josh', 15, 'Percussion')
]
print(sorted(band_students, key=lambda student: student[2], reverse=True))

Phần kết luận
Trong bài viết này, chúng ta đã học cách làm việc với Python sort()
và sorted()
các phương pháp.
Các sort()
chỉ hoạt động với danh sách và sắp xếp danh sách tại chỗ. Nó không có giá trị trả về.
Các sorted()
phương thức hoạt động với bất kỳ lần lặp nào và trả về một danh sách được sắp xếp mới. Ví dụ về các lần lặp sẽ là danh sách, chuỗi và bộ dữ liệu.
Cả hai phương thức này đều có hai đối số tùy chọn là key
và reverse
.
key
có giá trị của một hàm sẽ được gọi trên mỗi mục trong danh sách.
reverse
có một giá trị boolean của True
hoặc False
.