Python Danh sách sắp xếp() với các ví dụ

Phương thức sắp xếp () trong Python?

Chức năng sắp xếp trong Python giúp sắp xếp danh sách theo thứ tự tăng dần hoặc giảm dần. Nó có thể được sử dụng để sắp xếp danh sách số, bộ dữ liệu và danh sách chuỗi. Nó không tạo ra một danh sách riêng mà sửa đổi hoặc sắp xếp bản gốc.

Cú pháp của phương thức Sort trong Python

Hàm sắp xếp có cú pháp như sau: –

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

Hàm sắp xếp có hai tham số tùy chọn, cụ thể như được liệt kê bên dưới: –

  • Phím: - Dùng để sắp xếp hàm dựa trên tiêu chí sắp xếp.
  • Reverse: – nó nhận giá trị là đúng hoặc sai. Nếu đúng, hàm tùy chỉnh này sẽ sắp xếp danh sách theo thứ tự giảm dần.

Sắp xếp danh sách theo thứ tự tăng dần bằng phương pháp Sort trong Python

In Python, theo mặc định, hàm sắp xếp sẽ sắp xếp bất kỳ danh sách nào theo thứ tự tăng dần. Danh sách theo thứ tự tăng dần có giá trị thấp nhất ở phía bên trái và giá trị cao nhất nằm ở phía bên phải.

Ví dụ:

Python mã:

base_list=["Google","Reliance","Guru99","Content","Syntax"]
base_list.sort()
print("the base list after sorting is",base_list)

Đầu ra:

the base list after sorting is ['Content', 'Google', 'Guru99', 'Reliance', 'Syntax']

Giải thích mã:

  • Danh sách trên là danh sách chuỗi được xác định ngẫu nhiên.
  • Chức năng sắp xếp của Python giúp sắp xếp danh sách ngẫu nhiên theo thứ tự tăng dần, với độ dài từ thấp nhất ở phía bên trái và độ dài cao nhất của từ ở phía bên phải.

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

Chức năng sắp xếp cũng cho phép sắp xếp danh sách theo thứ tự giảm dần. Nó có thể được định nghĩa là thứ tự trong đó danh sách bắt đầu với giá trị cao nhất và kết thúc bằng giá trị thấp nhất.

Tham số đảo ngược của hàm sắp xếp được gán là true để sắp xếp danh sách theo thứ tự giảm dần.

Chúng ta hãy xem ví dụ dưới đây: –

Python mã:

base_list=[100,600,400,8000,50]
base_list.sort()
print("the base list after sorting is",base_list)
# Reverse Order
base_list.sort(reverse=True)
print("the base list after REVERSE sorting is",base_list)

Đầu ra:

the base list after sorting is [50, 100, 400, 600, 8000]
the base list after REVERSE sorting is [8000, 600, 400, 100, 50]

Lưu ý: Đảm bảo rằng việc gán từ “Đúng” cho tham số ngược bắt đầu bằng chữ hoa “T” để tránh mọi lỗi về thời gian chạy.

Sắp xếp danh sách các bộ dữ liệu bằng phương pháp Sắp xếp trong Python

Python bộ dữ liệu là tập hợp các phần tử bất biến tuân theo một trình tự có thứ tự. PythonChức năng sắp xếp của có thể được sử dụng để sắp xếp danh sách các bộ dữ liệu bằng cách sử dụng hàm tùy chỉnh và biểu thức lambda.

Có thể tạo một hàm tùy chỉnh mà không cần tên và được biểu diễn bằng biểu thức lambda. Sau đây là cú pháp cho biểu thức Lambda: –

Cú pháp:

Lambda arguments: expression

Cú pháp trên tương đương với mã python bên dưới:

def name (arguments):
return expression

Dưới đây là ví dụ về bộ dữ liệu và hàm tùy chỉnh để minh họa cách hàm sắp xếp với các tham số chính giúp sắp xếp các phần tử trong bộ dữ liệu: -

Python mã:

base_list = [('Alto', 2020, 500),('MSFT', 2022, 300),('Guru99', 2019, 1070)]
def get_key(base_list):
    return base_list[2]
base_list.sort(key=get_key,reverse=True)
print("The change in base list is as follows",base_list)

Đầu ra:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Giải thích mã:

  • Tham số ngược được định nghĩa là true để sắp xếp bộ dữ liệu theo thứ tự giảm dần.
  • Hàm tùy chỉnh lấy phần tử thứ hai của bộ dữ liệu.
  • Điều này được sử dụng làm khóa của hàm sắp xếp.

Chúng ta hãy xem ví dụ dưới đây sử dụng biểu thức lambda:

Python mã:

base_list = [('Alto', 2020, 500),
('MSFT', 2022, 300),
('Guru99', 2019, 1070)]
base_list.sort(key=lambda base_list:base_list[2],reverse=True)
print("The change in base list is as follows",base_list)

Đầu ra:

The change in the base list is as follows [('Guru99', 2019, 1070), ('Alto', 2020, 500), ('MSFT', 2022, 300)]

Giải thích:

  • Biểu thức lambda giúp bạn sắp xếp các phần tử của bộ dữ liệu từ cao xuống thấp với khóa là phần tử thứ hai của bộ dữ liệu.
  • Chương trình sẽ kiểm tra giá trị cao nhất của phần tử thứ hai trong bộ.

Sắp xếp các mục danh sách bằng Len làm tham số chính

Len là một hàm dựng sẵn để xác định độ dài của mục. Độ dài được xác định có thể được sử dụng để lập chỉ mục trong hàm sắp xếp. Để làm điều này, chúng ta gán Len cho Python tham số chính của hàm sắp xếp.

Sau đây Python đoạn mã minh họa cách sử dụng hàm Len với hàm sắp xếp.

Python Mã Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len)
print("The sorted list based on length:",base_list)

Đầu ra:

The sorted list based on length: ['Alto', 'Java', 'Guru99', 'Python', 'Google']

Giải thích mã:

Sắp xếp các mục trong danh sách bằng Len

  • Độ dài của phần tử trở thành chỉ số cho tham số key để sắp xếp danh sách theo thứ tự tăng dần.
  • Hàm Len ước tính độ dài của từng phần tử có trong danh sách cơ sở.
  • Nó giữ phần tử ngắn nhất ở phía bên trái và phần tử lớn nhất ở phía bên phải.
  • Ở đây, các từ alto và java có độ dài là 4, được sắp xếp đầu tiên trong danh sách, tiếp theo là Guru99, có độ dài là 6.

Ví dụ này minh họa khái niệm tham số đảo ngược trong hàm sắp xếp như dưới đây: –

Python Mã Code:

base_list=["Alto", "Guru99", "Python", "Google", "Java"]
base_list.sort(key=len,reverse=True)
print("The sorted list based on length:",base_list)

Đầu ra:

The sorted list based on length: ['Guru99', 'Python', 'Google', 'Alto', 'Java']

Sắp xếp các mục danh sách bằng hàm do người dùng xác định làm tham số chính

Bạn cũng có thể sử dụng hàm do người dùng xác định làm tham số chính để sắp xếp danh sách. Đây là một ví dụ: -

Python Mã Code:

base_list = [{'Example':'Python','year':1991},{'Example':'Alto','year':2014},{'Example':'Guru99', 'year':1995},
{'Example':'Google','year':1985},{'Example':'Apple','year':2007},{'Example':'Emails','year':2010},]
def get_year(element):
    return element['year']
base_list.sort(key=get_year)
print("The base list after sorting using explicit criteria",base_list)

Đầu ra:

The base list after sorting using explicit criteria [{'Example': 'Google', 'year': 1985}, {'Example': 'Python', 'year': 1991}, {'Example': 'Guru99', 'year': 1995}, {'Example': 'Apple', 'year': 2007}, {'Example': 'Emails', 'year': 2010}, {'Example': 'Alto', 'year': 2014}]

Giải thích mã:

  • Một hàm do người dùng định nghĩa được tạo để trả về năm
  • Tham số chính lấy hàm do người dùng xác định làm tiêu chí.
  • Hàm Sort sẽ sắp xếp danh sách theo thứ tự tăng dần dựa trên giá trị của phần tử “year”.

Sự khác biệt giữa phương thức sắp xếp và phương thức sắp xếp trong Python

Trước khi tóm tắt sự khác biệt, chúng ta hãy hiểu cú pháp của phương thức Sorted.

Python Cú pháp:

sorted (list_name, reverse=…., key=..)

Giải thích mã:

  • Hàm sắp xếp sắp xếp danh sách theo thứ tự tăng dần hoặc thứ tự giảm dần.
  • Hàm chấp nhận ba tham số, trong đó hai tham số thuộc loại tùy chọn và một tham số thuộc loại bắt buộc.
  • Tham số list_name là bắt buộc khi sử dụng phương thức Sorted.
  • Phương thức Sorted có thể lấy bất kỳ loại danh sách lặp lại nào làm đầu vào.
  • Các tham số chính và tham số ngược là các tham số tùy chọn theo phương pháp được sắp xếp trong Python.

Đây là một ví dụ về cách sử dụng hàm sắp xếp và sắp xếp trong Python như hình dưới đây: –

Python mã:

#Use of the Sorted method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=sorted(Base_list)
print("the New list using sorted method is",New_list)
#Use of the Sort method
Base_list=[11,10,9,8,7,6]
print("the original list is",Base_list)
New_list=Base_list.sort()
print("the New list using sort method is",New_list)

Đầu ra:

the original list is [11, 10, 9, 8, 7, 6]
the new list using the sorted method is [6, 7, 8, 9, 10, 11]
the original list is [11, 10, 9, 8, 7, 6]
the new list using the sort method is None

Giải thích mã:

  • Danh sách ban đầu được truyền dưới dạng tham số bắt buộc cho hàm được sắp xếp.
  • Phương thức Sorted trả về một danh sách mới bên cạnh danh sách ban đầu.
  • Vì không có tham số bổ sung nào được truyền cho phương thức đã sắp xếp nên danh sách mới theo mặc định được sắp xếp theo thứ tự tăng dần.
  • Chức năng sắp xếp không tạo ra bất kỳ danh sách mới nào.

Sau đây là những điểm tương đồng và khác biệt chính: –

Chức năng sắp xếp Chức năng sắp xếp
Chức năng sắp xếp trong Python là một hàm tích hợp lấy list_name làm tham số bắt buộc. Hàm sắp xếp không lấy danh sách gốc làm tham số.
Phương thức đã sắp xếp trả về một danh sách mới Hàm sắp xếp không trả về danh sách mới
Hàm sắp xếp nên được sử dụng cho danh sách lặp lại Hàm sắp xếp nên được sử dụng cho các danh sách không thể lặp lại.
Nó không sửa đổi danh sách gốc và cho phép chúng tôi giữ lại dữ liệu gốc. Hàm sắp xếp sửa đổi hàm ban đầu và do đó chiếm ít dung lượng bộ nhớ hơn

Khi nào nên sử dụng phương pháp sắp xếp hoặc phương pháp sắp xếp?

Chúng ta hãy lấy một ví dụ yêu cầu sắp xếp dữ liệu cuộc đua. Chương trình sử dụng số yếm và thời gian tính bằng giây để hoàn thành cuộc đua.

Python mã:

from collections import namedtuple
Base = namedtuple('Runner', 'bibnumber duration')
blist = []
blist.append(Base('8567', 1500))
blist.append(Base('5234', 1420))
blist.append(Base('2344', 1600))
blist.append(Base('2342', 1490))
blist.append(Base('23444', 1620))
blist.append(Base('6674', 1906))
print("original list",blist)
blist.sort(key=lambda x: getattr(x, 'duration'))
top_five_result = blist[:5]
print("Results using sort function",top_five_result)
r_blist=sorted(blist,key=lambda x: getattr(x, 'duration'))
top_five_result = r_blist[:5]
print("Results using sorted function",top_five_result)

Đầu ra:

original list [Runner(bibnumber='8567', duration=1500), Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='23444', duration=1620), Runner(bibnumber='6674', duration=1906)]

Results using sort function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Results using sorted function [Runner(bibnumber='5234', duration=1420), Runner(bibnumber='2342', duration=1490), Runner(bibnumber='8567', duration=1500), Runner(bibnumber='2344', duration=1600), Runner(bibnumber='23444', duration=1620)]

Giải thích mã:

  • Danh sách cơ sở được sắp xếp bằng cả hàm sắp xếp và hàm sắp xếp.
  • Danh sách cơ sở sẽ bị mất khi áp dụng chức năng sắp xếp.
  • Không nên áp dụng chức năng sắp xếp cho tập dữ liệu gốc. Nó nên được sử dụng khi có phiên bản sao chép của tập dữ liệu gốc.
  • Hàm Sorted giữ lại danh sách ban đầu. Nó không ghi đè lên nó.
  • Điều này mang lại khả năng truy xuất nguồn gốc tốt hơn và quản lý dữ liệu hiệu quả.

Kết luận

  • Hàm sắp xếp giúp sắp xếp danh sách số và chuỗi trong python.
  • Nó cũng có thể giúp sắp xếp các bộ dữ liệu.
  • Reverse và key là các tham số tùy chọn của hàm.
  • Nếu cần có một danh sách riêng biệt và đồng thời có danh sách gốc, thì phải sử dụng hàm sắp xếp, nếu không, phải sử dụng hàm sắp xếp để đạt được hiệu quả sử dụng bộ nhớ tối ưu.