Hỏi đáp về list.sort() trong python

hoi_dap_sort
đây là bài tập sắp xếp lại các list ở trong một list. Sắp xếp giá trị tăng dần theo phần tử thứ 2 ở trong list con.
Ở đây khi xây dựng hàm SortBySec(elememnt) người ta có truyền vào đối số. nhưng khi sử dụng ở trong hàm

list2.sort(key=SortBySec) 

không hề truyền vài đối số nhưng sao vẫn có thể sử dụng được và in ra kết quả vậy ạ.

Mình cũng không biết giải thích làm sao, mình chỉ biết xài thôi, chứ không giải thích được.

Bạn thử đọc document này thử, rất chi tiết cho từng trường hợp:
https://wiki.python.org/moin/HowTo/Sorting

3 Likes

Hàm SortBySec được gọi hai lần cho mỗi phép so sánh :slight_smile:

Như này:

>>> f = SortBySec
>>> f([1,2])
2
4 Likes

Sau một hồi được các b giúp đỡ mình cũng có tìm hiểu thêm các tài liệu thì nó giải thích là:

  • Nên đề cập đến tên hàm là khóa, không cần đề cập đến các đối số.
  • Khi bạn xác định key, nó chỉ chứa một tham số, nếu nó chứa nhiều hơn, chúng ta sẽ gặp lỗi
  • Khi chúng ta sử dụng hàm sort, nó sẽ lấy giá trị đầu tiên của danh sách và so sánh nó với phần tử thứ hai và dựa trên sự so sánh, nó sẽ sắp xếp danh sách. [khi khóa không được đề cập].
  • Khi khóa được đề cập sau đó thay vì so sánh phần tử thứ nhất với phần tử thứ hai, nó sẽ chuyển phần tử đầu tiên đó cho hàm đó, phần tử thứ hai tiếp theo cho hàm đó sau đó dựa trên kết quả của hàm đó, nó sẽ sắp xếp danh sách.

Khá củ chuối nhể. mình dùng gg dịch nên câu từ hơi lủng củng

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?