2017-08-11 19 views
5

Tôi có danh sách các danh sách gồm hai số.Cách thực hiện số học để sắp xếp danh sách các danh sách

[[2, 3], [7, 8], [3, 5]] 

Tôi muốn sắp xếp chúng dựa vào việc chia mỗi:

ví dụ như 2/3 (0,666), 7/8 (0,875) 3/5 (0,6) để đầu ra:

[[3, 5], [2, 3], [7, 8]] 

Tôi giả định rằng tôi sẽ sử dụng lambda bằng cách nào đó, nhưng tôi không biết cách viết nó một cách chính xác. Một cái gì đó như thế này, nhưng điều này chỉ sắp xếp theo các giá trị:

list_of_lists.sort(key=lambda x: (x[0],x[1])) 

Làm cách nào để thực hiện số học?

Trả lời

10
lists = [[2, 3], [7, 8], [3, 5]] 
lists.sort(key=lambda x: (x[0]/x[1])) 
print(lists) 
+1

Sidenote cho người dùng python 2.x: Tại đây bạn phải chuyển đổi một trong các toán tử thành điểm nổi. ví dụ: 'float (x [0])/x [1]' – cbo

+0

Cảm ơn @cbo vì đã thêm Sidenote cho người dùng 'python 2.x'. –

+0

Tôi tin rằng cbo ngụ ý rằng bạn có thể muốn chỉnh sửa câu trả lời của mình để phản ánh ghi chú đó. Sau khi tất cả, các ý kiến ​​sẽ không nhất thiết phải được xung quanh mãi mãi. –

-1

Có thể điều này hữu ích cho bạn.

a=[[2, 3], [7, 8], [3, 5]] 
print (sorted([a[i][0]/a[i][1] for i in range(len(a))])) 
+0

Tại sao bỏ phiếu? –

Các vấn đề liên quan