Cách sắp xếp danh sách bằng Python

How Sort Lists Python



Bài viết này sẽ đề cập đến hướng dẫn sắp xếp danh sách bằng Python. Đối tượng danh sách Python là một tập hợp của một hoặc nhiều mục được phân tách bằng dấu phẩy. Nó là một đối tượng có thể lặp lại và các phần tử của nó có thể được truy cập bằng cách lặp qua danh sách bằng cách sử dụng các câu lệnh lặp và các biểu thức khác. Bạn có thể sắp xếp một danh sách Python bằng cách sử dụng các phương pháp sắp xếp và sắp xếp, cả hai phương pháp này đều được giải thích trong bài viết. Tất cả các mẫu mã trong bài viết này đều được thử nghiệm với Python 3.9.5 trong Ubuntu 21.04.

Phương pháp sắp xếp

Phương pháp sắp xếp sắp xếp một danh sách tại chỗ. Nói cách khác, nó sẽ sửa đổi đối tượng danh sách mà bạn sắp xếp và sắp xếp lại phần tử của nó. Nếu bạn không yêu cầu danh sách ban đầu và không ngại danh sách thay đổi thứ tự các phần tử tại chỗ, thì đây là phương pháp hiệu quả nhất trong Python để sắp xếp danh sách. Hãy xem xét ví dụ này:







NS= [2, số 8, 6, 4]

NS.loại()

in (NS)

Sau khi chạy mẫu mã trên, bạn sẽ nhận được kết quả sau:



[2, 4, 6, số 8]

Câu lệnh đầu tiên trong mẫu mã xác định một danh sách. Tiếp theo, phương thức sắp xếp được gọi trong danh sách. Khi in danh sách, bạn có thể thấy rằng thứ tự của danh sách ban đầu đã được thay đổi.



Theo mặc định, Python sắp xếp danh sách theo thứ tự tăng dần. Nếu bạn muốn sắp xếp danh sách theo thứ tự giảm dần, hãy sử dụng phương pháp đảo ngược, như được hiển thị trong mẫu mã bên dưới:





NS= [2, số 8, 6, 4]

NS.loại()

NS.đảo ngược()

in (NS)

Sau khi chạy mẫu mã trên, bạn sẽ nhận được kết quả sau:

[số 8, 6, 4, 2]

Phương pháp ngược lại cũng thay đổi danh sách Python tại chỗ mà không cần tạo danh sách mới.



Nếu danh sách của bạn chứa các phần tử chuỗi, việc gọi phương thức sắp xếp trên đó sẽ sắp xếp nó theo thứ tự bảng chữ cái, trong đó các ký hiệu và số được xếp thứ tự đầu tiên. Hãy xem mẫu mã bên dưới:

NS= ['NS', 'đến', 'Với', '4', '#']

NS.loại()
in (NS)

Sau khi chạy mẫu mã trên, bạn sẽ nhận được kết quả sau:

['#', '4', 'đến', 'NS', 'Với']

Bạn cũng có thể sử dụng phương pháp đảo ngược trên danh sách chứa các phần tử chuỗi.

NS= ['NS', 'đến', 'Với', '4', '#']

NS.loại()

NS.đảo ngược()

in (NS)

Sau khi chạy mẫu mã trên, bạn sẽ nhận được kết quả sau:

['Với', 'NS', 'đến', '4', '#']

Phương pháp sắp xếp

Phương thức sắp xếp cũng sắp xếp một danh sách Python, theo cách tương tự như phương pháp sắp xếp. Tuy nhiên, thay vì sửa đổi danh sách ban đầu, nó trả về một danh sách mới để danh sách ban đầu của bạn được giữ nguyên trong trường hợp bạn muốn sử dụng lại nó. Hãy xem xét đoạn mã dưới đây:

list1= ['NS', 'đến', 'Với', '4', '#']

list2= đã sắp xếp(list1)

in (list1,list2)

Sau khi chạy mẫu mã trên, bạn sẽ nhận được kết quả sau:

['NS', 'đến', 'Với', '4', '#'] ['#', '4', 'đến', 'NS', 'Với']

Bạn có thể thấy trong đầu ra rằng list1 vẫn còn nguyên vẹn và list2 bây giờ có các phần tử đã được sắp xếp. Bạn cũng có thể sử dụng phương pháp đảo ngược trên list2 để thay đổi phương pháp sắp xếp thứ tự của nó.

Đối số ngược

Bạn có thể sử dụng đối số đảo ngược thay thế cho hàm đảo ngược trong cả hai phương pháp sắp xếp và sắp xếp để có được danh sách được sắp xếp theo thứ tự giảm dần. Chỉ cần cung cấp cho nó một giá trị True để thay đổi thứ tự sắp xếp:

list1= ['NS', 'đến', 'Với', '4', '#']

list2= đã sắp xếp(list1,đảo ngược=Thật)

in (list1,list2)

Sau khi chạy mẫu mã trên, bạn sẽ nhận được kết quả sau:

['NS', 'đến', 'Với', '4', '#'] ['Với', 'NS', 'đến', '4', '#']

Sử dụng chức năng chính để chỉ định logic của riêng bạn để sắp xếp các phần tử của danh sách

Trong cả hai phương pháp sắp xếp và đã sắp xếp, bạn có thể chỉ định một đối số khóa bổ sung nhận một hàm có thể gọi làm giá trị của nó. Đối số chính này có thể được gán một hàm hiện có từ các mô-đun Python tích hợp sẵn hoặc bạn có thể cung cấp hàm của riêng mình với logic tùy chỉnh. Hãy xem mẫu mã bên dưới:

list1= ['abcde', 'XYZ', 'ijkl']

list2= đã sắp xếp(list1,Chìa khóa=len)

in (list1,list2)

danh sách1.loại(Chìa khóa=len)

in (list1)

Sau khi chạy mẫu mã trên, bạn sẽ nhận được kết quả sau:

['abcde', 'XYZ', 'ijkl'] ['XYZ', 'ijkl', 'abcde']

['XYZ', 'ijkl', 'abcde']

Mẫu mã minh họa cách sử dụng đối số khóa trong cả hai phương pháp sắp xếp và sắp xếp. Hàm được cung cấp cho nó được gọi là len xác định độ dài của một đối tượng chuỗi hoặc một đối tượng có thể lặp lại. Ban đầu, hàm hoặc có thể gọi chỉ nhận một đối số. Bạn gán nó cho đối số khóa mà không cần sử dụng dấu ngoặc nhọn. Hàm có thể gọi được cung cấp cho đối số khóa được gọi theo từng phần tử của danh sách. Sau đó, các giá trị được trả về từ phương thức có thể gọi này được sử dụng làm khóa để sắp xếp danh sách. Do đó, việc cung cấp hàm len cho đối số khóa sẽ sắp xếp các phần tử của danh sách theo thứ tự độ dài của chúng, nghĩa là từ ngắn nhất đến dài nhất. Như đã nêu trước đó, bạn luôn có thể sử dụng phương pháp đảo ngược để đảo ngược phương pháp sắp xếp.

Bạn cũng có thể sử dụng hàm tùy chỉnh của riêng mình hoặc các hàm lambda một lớp để trả về giá trị của một biểu thức duy nhất. Hãy xem mẫu mã dưới đây trong đó danh sách có hàng loạt thùng trái cây tồn kho hiện tại:

list1= [('trái xoài', 99), ('quả cam', 51), ('chuối', 76)]

danh sách1.loại(Chìa khóa=lambdahàng tồn kho: hàng tồn kho[1])

in (list1)

Sau khi chạy mẫu mã trên, bạn sẽ nhận được kết quả sau:

[('quả cam', 51), ('chuối', 76), ('trái xoài', 99)]

Hàm lambda được cung cấp với một khoảng không quảng cáo đối số, là mỗi phần tử của danh sách ở dạng tuple. Sau đó, nó trả về phần tử thứ hai của mỗi tuple dưới dạng khóa (tại chỉ mục 1). Sau đó, hàm sắp xếp sẽ sắp xếp tất cả các bộ giá trị theo phần tử thứ hai của nó theo thứ tự tăng dần. Bạn cũng có thể sử dụng hàm đảo ngược hoặc đối số đảo ngược trên kết quả cuối cùng để đảo ngược thứ tự sắp xếp.

Phần kết luận

Đây là một số cách sử dụng mà bạn có thể sắp xếp nội dung của một danh sách có thể lặp lại trong Python. Đối số chính cho phép bạn viết logic sắp xếp tùy chỉnh của riêng mình, phù hợp với các ứng dụng có thể có nhu cầu khác với các phương pháp sắp xếp tích hợp sẵn.