Khóa sắp xếp python

Xin chào mọi người. Ngôn ngữ lập trình Python 3 có sẵn 2 hàm sorted[] và sort[], vậy hôm nay chúng ta cùng tìm hiểu xem các hàm này hoạt động như thế nào nhé

Hàm sắp xếp[]

Đây là một hàm có sẵn trong Python. Đúng như tên gọi của nó thì hàm này có thể sắp xếp các phần tử trong một danh sách, đặt hoặc tuple

Nội dung chính Hiển thị

Sắp xếp theo số

Hàm sắp xếp được sử dụng thường xuyên với sắp xếp các số

Ví dụ

Với danh sách

>>> number_list = [7, 5, 8, 2, 4, 1, 3]
>>> sorted[number_list]
[1, 2, 3, 4, 5, 7, 8]

Với tuple

>>> number_tuple = [7, 5, 8, 2, 4, 1, 3]
>>> sorted[number_tuple]
[1, 2, 3, 4, 5, 7, 8]

And with set

>>> number_set = {7, 5, 8, 2, 4, 1, 3}
>>> sorted[number_set]
[1, 2, 3, 4, 5, 7, 8]

Có thể dễ dàng thấy rằng bất kể đầu vào là gì, thì đầu ra của hàm sorted[] cũng sẽ là một danh sách. Nếu bạn muốn chuyển lại kiểu ban đầu của cấu trúc ban đầu, bạn có thể gọi biến đổi hàm

Ví dụ

>>> number_set = {1, 1, 9, 5, 6, 7, 10, 11, 4, 3, 7}
>>> sorted_number_set = sorted[number_set]
>>> sorted_number_set
[1, 3, 4, 5, 6, 7, 9, 10, 11]
>>> set[sorted_number_set]
{1, 3, 4, 5, 6, 7, 9, 10, 11}

Sắp xếp theo chuỗi ký tự

Hàm sorted[] cũng có thể được sử dụng để sắp xếp các chuỗi ký tự. Lưu ý là hàm sorted[] phân biệt chữ hoa chữ thường, tức là các ký tự trong hoa sẽ có giá trị và thứ tự khác với các ký tự không trong hoa

Ví dụ

>>> char_list = ['I', 'i', 'one', 'two', 'three', 'a', 'b', 'c']
>>> sorted[char_list]
['I', 'a', 'b', 'c', 'i', 'one', 'three', 'two']

You may be sorting number [dưới dạng ký tự ]

>>> string_number_list = ['1', '5', '9', '4', '2', '0']
>>> sorted[string_number_list]
['0', '1', '2', '4', '5', '9']

Bạn có thể sắp xếp các ký tự trong một câu, sorted[] sẽ coi từng ký tự là một phần tử và sẽ tách từng ký tự ra để sắp xếp

>>> sentence = 'I like abc'
>>> sorted[sentence]
[' ', ' ', 'I', 'a', 'b', 'c', 'e', 'i', 'k', 'l']

Các tham số không bắt buộc

Như ta đã thấy, hàm sorted[] phải nhận 1 tham số bắt buộc là một đối tượng dạng danh sách, set hoặc tuple, nhưng sorted[] còn nhận 2 tham số khác, là đảo ngược và khóa

đảo ngược

Khi bạn truyền một đối tượng vào hàm sorted[], tham số đảo ngược được mặc định là Sai. You can transfer to reverse=True, when that sorted[] will sắp xếp đảo ngược thứ tự

>>> number_list = [1, 2, 3, 4, 5, 6]
>>> sorted[number_list, reverse=True]
[6, 5, 4, 3, 2, 1]

Chìa khóa

Nếu bạn có một hàm đặc biệt và cần chạy hàm này với mỗi phần tử của đối tượng được truyền vào hàm sorted[], bạn có thể truyền vào khóa tham số và sorted sẽ sắp xếp các phần tử dựa trên kết quả trả về của bạn . Ví dụ, bạn có 1 mảng 2 chiều

________số 8

Và giờ bạn muốn sắp xếp các mảng này dựa trên phần tử tại vị trí thứ 2 [tức là chỉ mục là 1], bạn có thể truyền vào khóa một hàm lambda, ở đây chúng ta chỉ cần sắp xếp theo phần thử tại chỉ mục 1, vậy

lambda x:x[1]

Kết hợp lại, ta có

>>> number_tuple = [7, 5, 8, 2, 4, 1, 3]
>>> sorted[number_tuple]
[1, 2, 3, 4, 5, 7, 8]
0

Giới hạn và lỗi thường gặp với sorted[]

Một trong những lỗi thường gặp nhất với sắp xếp đó là trong đối tượng mà bạn truyền vào có các phần tử không thể so sánh được với nhau, ví dụ số và chữ, số và null, chữ và kiểu Boolean [True, False]

>>> number_tuple = [7, 5, 8, 2, 4, 1, 3]
>>> sorted[number_tuple]
[1, 2, 3, 4, 5, 7, 8]
1

Một lỗi khác mà có thể khiến kết quả trả về không như ý muốn là so sánh thứ tự nhưng lại có cả chữ thường và chữ hoa

>>> number_tuple = [7, 5, 8, 2, 4, 1, 3]
>>> sorted[number_tuple]
[1, 2, 3, 4, 5, 7, 8]
2

Điều khác cần lưu ý đó là hàm được truyền vào khóa chỉ được phép nhận 1 tham số

>>> number_tuple = [7, 5, 8, 2, 4, 1, 3]
>>> sorted[number_tuple]
[1, 2, 3, 4, 5, 7, 8]
3

Và hàm được truyền vào key phải chạy thành công với mọi phần tử của đối tượng mà bạn đang truyền vào sorted[]

>>> number_tuple = [7, 5, 8, 2, 4, 1, 3]
>>> sorted[number_tuple]
[1, 2, 3, 4, 5, 7, 8]
4

Hàm sắp xếp[]

Vì vậy, với hàm sorted[], hàm sort[] có chức năng gần như tương tự, ngoại trừ 1 số điểm khác biệt. Hàm sort[] is a method of data type list in python. Có 1 số điểm cần lưu ý

  • Hàm sort[] vẫn nhận thêm từ khóa key và đảo ngược như hàm sorted
  • Hàm sort[] không phải là phương thức của tuple và set, nên đối tượng thuộc kiểu này sẽ không được gọi là nó
  • Hàm sort[] không trả về danh sách mới được sắp xếp mà thay đổi ngay tại vị trí danh sách đối tượng đã gọi nó. Vì vậy bạn không nên chỉ định kết quả trả về của danh sách. sort[] to 1 variable because value of the variable will be None
>>> number_tuple = [7, 5, 8, 2, 4, 1, 3]
>>> sorted[number_tuple]
[1, 2, 3, 4, 5, 7, 8]
5

Tổng kết

Như vậy là chúng ta đã biết sự khác nhau giữa hàm sorted[] và sort[] trong Python, chung quy lại thì 2 hàm này gần như nhau, tuy nhiên hàm sort[] là phương thức của danh sách và các kiểu tuple, set will . Cả 2 hàm đều có thể nhận thêm khóa tham số giúp chúng chạy hàm với từng phần tử và đảo ngược giúp chúng đảo ngược thứ tự sắp xếp. Mình mong các bạn đã học được thêm từ 2 bài viết này. Thank vì đã đọc. Bạn có thể tham khảo thêm tại đây

Chủ Đề