Sắp xếp một danh sách trong Python là cách sắp xếp các phần tử của danh sách theo thứ tự tăng dần hoặc giảm dần dựa trên một tiêu chí đã định, chẳng hạn như thứ tự số học hoặc từ điển.
Điều này có thể đạt được bằng cách sử dụng hàm tích hợp sorted() hoặc bằng cách gọi phương thức sort() trên chính danh sách, cả hai đều sửa đổi danh sách gốc hoặc trả về một danh sách đã sắp xếp mới tùy thuộc vào phương pháp được sử dụng.
Python sort() method được sử dụng để sắp xếp các phần tử của một danh sách tại chỗ. Điều này có nghĩa là nó sửa đổi danh sách gốc và không trả về một danh sách mới.
Cú pháp để sử dụng phương thức sort() như sau −
list_name.sort(key=None, reverse=False)
Nơi nào,
reverse (optional) là một giá trị boolean. Nếu True, danh sách sẽ được sắp xếp theo thứ tự giảm dần. Nếu False (mặc định), danh sách sẽ được sắp xếp theo thứ tự tăng dần.
Trong ví dụ dưới đây, chúng ta đang sử dụng hàm sort() để sắp xếp các mục trong danh sách theo thứ tự alphanumerical −
list1 = ['physics', 'Biology', 'chemistry', 'maths'] print ("list before sort:", list1) list1.sort() print ("list after sort : ", list1)
Nó sẽ tạo ra đầu ra sau −
list before sort: ['physics', 'Biology', 'chemistry', 'maths'] list after sort : ['Biology', 'chemistry', 'maths', 'physics']
Ở đây, chúng ta đang sử dụng hàm sort() để sắp xếp danh sách đã cho theo thứ tự số.
list2 = [10,16, 9, 24, 5] print ("list before sort", list2) list2.sort() print ("list after sort : ", list2)
Đầu ra được tạo ra như dưới đây −
list before sort [10, 16, 9, 24, 5] list after sort : [5, 9, 10, 16, 24]
Hàm sorted() trong Python là một hàm tích hợp sẵn được sử dụng để sắp xếp các phần tử của một iterable (như danh sách, tuple hoặc chuỗi) và trả về một danh sách đã được sắp xếp mới, trong khi giữ nguyên iterable gốc.
Cú pháp để sử dụng phương thức sorted() như sau −
sorted(iterable, key=None, reverse=False)
Nơi nào,
reverse (optional) là một giá trị boolean. Nếu True, tập iterable sẽ được sắp xếp theo thứ tự giảm dần. Nếu False (mặc định), tập iterable sẽ được sắp xếp theo thứ tự tăng dần.
Trong ví dụ sau, chúng ta sử dụng hàm sorted() để sắp xếp một danh sách số và lấy được một danh sách đã được sắp xếp mới −
numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] # Sorting in descending order sorted_numbers_desc = sorted(numbers, reverse=True) print(sorted_numbers_desc)
Dưới đây là đầu ra của đoạn mã trên −
[9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
Trong Python, hàm callback đề cập đến một hàm được truyền dưới dạng tham số cho một hàm khác và được gọi hoặc thực thi bên trong hàm đó.
Chúng ta có thể sắp xếp các mục trong danh sách bằng cách sử dụng hàm callback thông qua hàm sorted() hoặc hàm sort() trong Python. Cả hai hàm này đều cho phép chúng ta chỉ định một tiêu chí sắp xếp tùy chỉnh bằng cách sử dụng tham số "key", tham số này chấp nhận một hàm callback. Hàm callback này xác định cách các phần tử nên được so sánh và sắp xếp.
Phương thức str.lower() trong Python được sử dụng để chuyển đổi tất cả các ký tự trong một chuỗi thành chữ thường. Nó trả về một chuỗi mới với tất cả các ký tự chữ cái được chuyển thành chữ thường trong khi giữ nguyên các ký tự không phải chữ cái.
Trong ví dụ này, chúng ta đang truyền phương thức str.lower() làm đối số cho tham số "key" trong hàm sort().
list1 = ['Physics', 'biology', 'Biomechanics', 'psychology'] print ("list before sort", list1) list1.sort(key=str.lower) print ("list after sort : ", list1)
Nó sẽ tạo ra output −
list before sort ['Physics', 'biology', 'Biomechanics', 'psychology'] list after sort : ['biology', 'Biomechanics', 'Physics', 'psychology']
Chúng ta cũng có thể sử dụng một function được định nghĩa bởi người dùng làm tham số khóa trong phương thức sort().
Trong ví dụ này, myfunction() sử dụng toán tử % để trả về phần dư, dựa trên đó việc sắp xếp được thực hiện.
def myfunction(x): return x%10 list1 = [17, 23, 46, 51, 90] print ("list before sort", list1) list1.sort(key=myfunction) print ("list after sort : ", list1)
Nó sẽ tạo ra đầu ra sau −
list before sort [17, 23, 46, 51, 90] list after sort: [90, 51, 23, 46, 17]