Các bộ so sánh được sử dụng để so sánh hai đối tượng. Trong thử thách này, bạn sẽ tạo ra một bộ so sánh và sử dụng nó để sắp xếp một mảng. Lớp người chơi được cung cấp trong trình soạn thảo dưới đây. Nó có hai lĩnh vực:
- Đặt tên cho một chuỗi.
- Điểm: Một số nguyên.
Đưa ra một loạt các đối tượng người chơi, hãy viết một bộ so sánh sắp xếp chúng theo thứ tự giảm điểm. Nếu hoặc nhiều người chơi có cùng điểm, hãy sắp xếp những người chơi đó theo thứ tự bảng chữ cái theo tên. Để thực hiện điều này, bạn phải tạo một lớp kiểm tra thực hiện giao diện so sánh, sau đó viết phương thức Int so sánh [trình phát A, Player B] thực hiện phương thức so sánh.compare [t o1, t o2]. Nói tóm lại, khi sắp xếp theo thứ tự tăng dần, hàm so sánh trả về -1 nếu ab.
Mô tả chức năng
Tuyên bố một lớp kiểm tra thực hiện phương pháp so sánh như mô tả. Nó nên sắp xếp đầu tiên giảm dần theo điểm số, sau đó tăng dần theo tên. Code Stub đọc đầu vào, tạo một danh sách các đối tượng người chơi, sử dụng phương thức của bạn để sắp xếp dữ liệu và in nó ra đúng cách.
Đầu vào mẫu
5
amy 100
david 100
heraldo 50
aakansha 75
aleksa 150
Đầu ra mẫu
aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
Dung dịch:
Explanation:
Như bạn có thể thấy, người chơi lần đầu tiên được sắp xếp bằng cách giảm điểm và sau đó được sắp xếp theo thứ tự bảng chữ cái theo tên.
__repr __ [] Hàm trả về biểu diễn đối tượng. Nó có thể là bất kỳ biểu thức python hợp lệ nào như tuple, từ điển, chuỗi, v.v.Python expression such as tuple, dictionary, string, etc.
Cho: Tóm lại, khi sắp xếp theo thứ tự tăng dần, hàm so sánh trả về -1 nếu ab.
Từ câu lệnh đầu ra và câu hỏi mẫu, rõ ràng chúng ta cần sắp xếp tên theo thứ tự tăng dần và điểm theo thứ tự giảm dần. Sử dụng câu lệnh trả về cho phù hợp.
Tôi rất khuyến khích bạn không sử dụng lồng nhau nếu các câu lệnh khối trong các giải pháp của bạn trừ khi cần thiết và không có cách giải quyết. Bạn thường có thể đặt riêng nếu các khối theo một thứ tự cụ thể để hoàn thành công việc của bạn như tôi đã làm trong giải pháp của tôi.
Hy vọng nó giúp :]
Theo dõi tôi trên:
Chức năng so sánh hoạt động như thế nào?
Theo các tài liệu, chữ ký hiện là
aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
1, vì vậy bạn phải sử dụng hàm aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
2 để thực hiện một loại tùy chỉnh. Các tài liệu đề xuất:Sử dụng
aleksa 150
3 để chuyển đổi hàm CMP kiểu cũ thành chức năng chính.
amy 100
david 100
aakansha 75
heraldo 50
Đây là một ví dụ:
>>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
Tuy nhiên, chức năng của bạn cũng không phù hợp với giao thức chức năng cmp
cũ, vì nó trả về
aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
5 hoặc aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
6. Đối với tình huống cụ thể của bạn, bạn có thể làm:>>> your_key = cmp_to_key[make_comparator[cmpValue]]
>>> sorted[data, key=your_key]
[[1, None], [2, None], [3, None], [4, None]]
Sử dụng chức năng
aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
7 từ câu trả lời của @Fred Foo. Đã tạo: tháng 2 năm 03, 2022cmp
với hàm aleksa 150
9 để sắp xếp một mảng trong Python
amy 100
david 100
aakansha 75
heraldo 50
0 để sắp xếp một mảng trong Python>>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
1 chủ yếu được sử dụng để so sánh hai giá trị của các đối tượng đã cho. Hướng dẫn này thảo luận về >>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
2 và cách sử dụng các chức năng >>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
3 để sắp xếp một mảng trong Python.>>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
Sử dụng đối số cmp
với hàm aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
9 để sắp xếp một mảng trong Python
amy 100
david 100
aakansha 75
heraldo 50
Phương pháp này chỉ hoạt động trong các phiên bản Python 2 và được xóa trong các phiên bản mới hơn của Python được phát hành sau phiên bản Python 3.
Trước đó, phương pháp
aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
9 đã có một đối số cmp
sử dụng các bộ so sánh để sắp xếp một cấu trúc dữ liệu nhất định.Mã sau sử dụng đối số cmp
với hàm
aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
9 để sắp xếp một mảng trong Python 2.def compare[a, b]:
return a[0] - b[0]
data = [[8, None], [7, None], [5, None], [4, None]]
print [sorted[data, cmp=compare]]
Mã trên cung cấp đầu ra sau:
[[4, None], [5, None], [7, None], [8, None]]
Mặc dù chúng ta có thể sử dụng hàm
>>> your_key = cmp_to_key[make_comparator[cmpValue]]
>>> sorted[data, key=your_key]
[[1, None], [2, None], [3, None], [4, None]]
0 do Python cung cấp trong Python 2, hàm này không tồn tại cho phiên bản mới hơn trong Python 3. Việc sử dụng >>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
2 bị hạn chế trong các phiên bản mới hơn của Python.Hàm
>>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
3 được sử dụng để sắp xếp cấu trúc dữ liệu nhất định cùng với sự trợ giúp của hàm aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
9. Trong Python 3, chúng tôi sử dụng hàm aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
2 để thực hiện quy trình sắp xếp tùy chỉnh.Ở đây, chúng tôi sử dụng hàm
aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
3 từ thư viện >>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
0 để chuyển đổi hàm cmp
mới lỗi thời thành hàm aleksa 150
amy 100
david 100
aakansha 75
heraldo 50
2.Mã sau sử dụng hàm
>>> def compare[x, y]:
... return x[0] - y[0]
...
>>> data = [[4, None], [3, None], [2, None], [1, None]]
>>> from functools import cmp_to_key
>>> sorted[data, key=cmp_to_key[compare]]
[[1, None], [2, None], [3, None], [4, None]]
3 để sắp xếp cấu trúc dữ liệu nhất định.from functools import cmp_to_key
def compare[a, b]:
return a[0] - b[0]
data = [[8, None], [7, None], [5, None], [4, None]]
print[sorted[data, key=cmp_to_key[compare]]]
Mã trên cung cấp đầu ra sau:
[[4, None], [5, None], [7, None], [8, None]]