Trong Python, tôi đang cố gắng sắp xếp theo ngày với lambda. Tôi không thể hiểu thông báo lỗi của tôi. Tin nhắn là:
<lambda>() takes exactly 1 argument (2 given)
Dòng tôi có là
a = sorted(a, lambda x: x.modified, reverse=True)
Trong Python, tôi đang cố gắng sắp xếp theo ngày với lambda. Tôi không thể hiểu thông báo lỗi của tôi. Tin nhắn là:
<lambda>() takes exactly 1 argument (2 given)
Dòng tôi có là
a = sorted(a, lambda x: x.modified, reverse=True)
Câu trả lời:
Sử dụng
a = sorted(a, key=lambda x: x.modified, reverse=True)
# ^^^^
Trên Python 2.x, sorted
hàm lấy các đối số theo thứ tự này:
sorted(iterable, cmp=None, key=None, reverse=False)
Vì vậy, nếu không có key=
, hàm bạn truyền vào sẽ được coi là cmp
hàm có 2 đối số.
lambda
với một tham số khác vì một cmp
hàm mất 2?
cmp
, một hàm so sánh có hai đối số. Nếu bạn không chỉ định rằng bạn đang vượt qua a key
, thì nó được giả sử từ thứ tự tham số chức năng mà bạn đang vượt qua một bộ so sánh. Lambda của bạn có một tham số, do đó không phải là một bộ so sánh hợp lệ và đó là những gì lỗi nói.
lst = [('candy','30','100'), ('apple','10','200'), ('baby','20','300')]
lst.sort(key=lambda x:x[1])
print(lst)
Nó sẽ in như sau:
[('apple', '10', '200'), ('baby', '20', '300'), ('candy', '30', '100')]
Danh sách Python có hai cách dựng sẵn để sắp xếp dữ liệu:
sort() — A method that modifies the list in-place
sorted() — A built-in function that builds a new sorted list from an iterable
Dựa trên yêu cầu của bạn, bạn có thể chọn trong số hai:
nếu bạn muốn giữ danh sách gốc, bạn có thể sử dụng chức năng được sắp xếp hoặc nếu bạn không cần danh sách gốc, bạn có thể sử dụng chức năng sắp xếp.
Trước khi tiếp tục sắp xếp hoặc sắp xếp, chúng ta cần hiểu lambda.
Lambda là một hàm ẩn danh và một hàm ẩn danh là một hàm được định nghĩa mà không có tên, bài đăng này dường như giải thích nó khá độc đáo.
https://www.programiz.com/python-programming/anonymous-f ghép
Các hàm Lambda rất hay khi gọi nội tuyến vì chúng chỉ có một biểu thức được ước tính và trả về. Họ cú pháp cho một lambda là:
đối số lambda: biểu thức
Hãy xem cách sử dụng chức năng được sắp xếp:
student_tuples = [('john', 'A', 15),('jane', 'B', 12),('dave', 'B', 10),]
sorted(student_tuples, key=lambda student: student[2])
đầu ra: [('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
Ở đây chúng ta có thể thấy danh sách student_tuples có các bộ dữ liệu được sắp xếp dựa trên tham số chính với điều kiện là sinh viên [2].