Sắp xếp danh sách Python ()

Phương thức sort () sắp xếp các phần tử của một danh sách nhất định theo thứ tự tăng dần hoặc giảm dần cụ thể.

Cú pháp của sort()phương thức là:

 list.sort (key =…, reverse =…)

Ngoài ra, bạn cũng có thể sử dụng hàm sorted () tích hợp sẵn của Python cho cùng mục đích.

 đã sắp xếp (danh sách, phím =…, đảo ngược =…)

Lưu ý: Sự khác biệt đơn giản nhất giữa sort()sorted()là: sort()thay đổi danh sách trực tiếp và không trả về bất kỳ giá trị nào, trong khi sorted()không thay đổi danh sách và trả về danh sách đã sắp xếp.

sort () Tham số

Theo mặc định, sort()không yêu cầu bất kỳ tham số bổ sung nào. Tuy nhiên, nó có hai tham số tùy chọn:

  • ngược lại - Nếu True, danh sách đã sắp xếp bị đảo ngược (hoặc sắp xếp theo thứ tự Giảm dần)
  • key - chức năng đóng vai trò là một khóa để so sánh sắp xếp

Trả về giá trị từ sort ()

Các sort()phương pháp không trả lại bất kỳ giá trị. Đúng hơn, nó thay đổi danh sách ban đầu.

Nếu bạn muốn một hàm trả về danh sách đã sắp xếp thay vì thay đổi danh sách ban đầu, hãy sử dụng sorted().

Ví dụ 1: Sắp xếp một danh sách nhất định

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort() # print vowels print('Sorted list:', vowels)

Đầu ra

 Danh sách được sắp xếp: ('a', 'e', ​​'i', 'o', 'u')

Sắp xếp theo thứ tự giảm dần

Các sort()phương pháp chấp nhận một reversetham số như một tham số tùy chọn.

Cài đặt reverse = Truesắp xếp danh sách theo thứ tự giảm dần.

 list.sort(reverse=True)

Ngoài ra sorted(), bạn có thể sử dụng mã sau.

 sorted(list, reverse=True)

Ví dụ 2: Sắp xếp danh sách theo thứ tự giảm dần

 # vowels list vowels = ('e', 'a', 'u', 'o', 'i') # sort the vowels vowels.sort(reverse=True) # print vowels print('Sorted list (in Descending):', vowels)

Đầu ra

 Danh sách đã sắp xếp (trong Giảm dần): ('u', 'o', 'i', 'e', ​​'a')

Sắp xếp theo chức năng tùy chỉnh bằng phím

Nếu bạn muốn triển khai của riêng mình để sắp xếp, sort()phương thức cũng chấp nhận một keyhàm làm tham số tùy chọn.

Dựa trên kết quả của chức năng chính, bạn có thể sắp xếp danh sách đã cho.

 list.sort(key=len)

Ngoài ra để sắp xếp:

 sorted(list, key=len)

Đây lenlà hàm tích hợp sẵn của Python để đếm độ dài của một phần tử.

Danh sách được sắp xếp dựa trên độ dài của mỗi phần tử, từ đếm thấp nhất đến cao nhất.

Chúng tôi biết rằng một tuple được sắp xếp bằng cách sử dụng tham số đầu tiên của nó theo mặc định. Hãy xem cách tùy chỉnh sort()phương pháp sắp xếp bằng cách sử dụng phần tử thứ hai.

Ví dụ 3: Sắp xếp danh sách bằng phím

 # take second element for sort def takeSecond(elem): return elem(1) # random list random = ((2, 2), (3, 4), (4, 1), (1, 3)) # sort list with key random.sort(key=takeSecond) # print list print('Sorted list:', random)

Đầu ra

 Danh sách đã sắp xếp: ((4, 1), (2, 2), (1, 3), (3, 4))

Hãy lấy một ví dụ khác. Giả sử chúng ta có một danh sách thông tin về các nhân viên của một văn phòng mà mỗi phần tử là một từ điển.

Chúng ta có thể sắp xếp danh sách theo cách sau:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # custom functions to get employee info def get_name(employee): return employee.get('Name') def get_age(employee): return employee.get('age') def get_salary(employee): return employee.get('salary') # sort by name (Ascending order) employees.sort(key=get_name) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=get_age) print(employees, end='') # sort by salary (Descending order) employees.sort(key=get_salary, reverse=True) print(employees, end='')

Đầu ra

(('Tên': 'Alan Turing', 'tuổi': 25, 'lương': 10000), ('Tên': 'John Hopkins', 'tuổi': 18, 'lương': 1000), ('Tên ':' Mikhail Tal ',' tuổi ': 40,' lương ': 15000), (' Tên ':' Sharon Lin ',' tuổi ': 30,' lương ': 8000)) ((' Tên ':' John Hopkins ',' tuổi ': 18,' lương ': 1000), (' Tên ':' Alan Turing ',' tuổi ': 25,' lương ': 10000), (' Tên ':' Sharon Lin ', 'tuổi': 30, 'lương': 8000), ('Tên': 'Mikhail Tal', 'tuổi': 40, 'lương': 15000)) (('Tên': 'Mikhail Tal', 'tuổi' : 40, 'lương': 15000), ('Tên': 'Alan Turing', 'tuổi': 25, 'lương': 10000), ('Tên ':' Sharon Lin ',' tuổi ': 30,' lương ': 8000), (' Tên ':' John Hopkins ',' tuổi ': 18,' lương ': 1000))

Ở đây, đối với trường hợp đầu tiên, hàm tùy chỉnh của chúng tôi trả về tên của từng nhân viên. Vì tên là a stringnên Python theo mặc định sắp xếp nó theo thứ tự bảng chữ cái.

Đối với trường hợp thứ hai, age ( int) được trả về và được sắp xếp theo thứ tự tăng dần.

Đối với trường hợp thứ ba, hàm trả về lương ( int) và được sắp xếp theo thứ tự giảm dần bằng cách sử dụng reverse = True.

Bạn nên sử dụng hàm lambda khi hàm có thể được tóm tắt trong một dòng. Vì vậy, chúng ta cũng có thể viết chương trình trên dưới dạng:

 # sorting using custom key employees = ( ('Name': 'Alan Turing', 'age': 25, 'salary': 10000), ('Name': 'Sharon Lin', 'age': 30, 'salary': 8000), ('Name': 'John Hopkins', 'age': 18, 'salary': 1000), ('Name': 'Mikhail Tal', 'age': 40, 'salary': 15000), ) # sort by name (Ascending order) employees.sort(key=lambda x: x.get('Name')) print(employees, end='') # sort by Age (Ascending order) employees.sort(key=lambda x: x.get('age')) print(employees, end='') # sort by salary (Descending order) employees.sort(key=lambda x: x.get('salary'), reverse=True) print(employees, end='')

Đầu ra

(('Tên': 'Alan Turing', 'tuổi': 25, 'lương': 10000), ('Tên': 'John Hopkins', 'tuổi': 18, 'lương': 1000), ('Tên ':' Mikhail Tal ',' tuổi ': 40,' lương ': 15000), (' Tên ':' Sharon Lin ',' tuổi ': 30,' lương ': 8000)) ((' Tên ':' John Hopkins ',' tuổi ': 18,' lương ': 1000), (' Tên ':' Alan Turing ',' tuổi ': 25,' lương ': 10000), (' Tên ':' Sharon Lin ', 'tuổi': 30, 'lương': 8000), ('Tên': 'Mikhail Tal', 'tuổi': 40, 'lương': 15000)) (('Tên': 'Mikhail Tal', 'tuổi' : 40, 'lương': 15000), ('Tên': 'Alan Turing', 'tuổi': 25, 'lương': 10000), ('Tên ':' Sharon Lin ',' tuổi ': 30,' lương ': 8000), (' Tên ':' John Hopkins ',' tuổi ': 18,' lương ': 1000))

Để tìm hiểu thêm về các hàm lambda, hãy truy cập Các hàm Lambda trong Python.

thú vị bài viết...