Python - Sort Lists

Sorting Lists in Python

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.

Sorting Lists Using sort() Method

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.

Syntax

Cú pháp để sử dụng phương thức sort() như sau −

list_name.sort(key=None, reverse=False)

Nơi nào,

  • list_name is the name of the list to be sorted.
  • key (optional) is a function that defines the sorting criterion. If provided, it is applied to each element of the list for sorting. Default is None.
  • 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.

Example of Sorting List in Lexicographical Order

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']

Example of Sorting List in Numerical Order

Ở đâ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]

Sorting Lists Using sorted() Method

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.

Syntax

Cú pháp để sử dụng phương thức sorted() như sau −

sorted(iterable, key=None, reverse=False)

Nơi nào,

  • iterable is the iterable (e.g., list, tuple, string) whose elements are to be sorted.
  • key (optional) is a function that defines the sorting criterion. If provided, it is applied to each element of the iterable for sorting. Default is None.
  • 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.

Example

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]

Sorting List Items with Callback Function

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.

Example Using str.lower() as key Parameter

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']

Example Using user-defined Function as key Parameter

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]