2017-08-11 25 views
5

Mam listę list składającą się z dwóch liczb każda.Jak wykonać arytmetykę sortowania listy list

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

Chciałbym sortować je w oparciu o podział każdego:

np 2/3 (0,666), 7/8 (0,875) 3/5 (0,6) wyjściowe:

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

Domyślam się, że będę używał lambda, ale nie wiem, jak napisać poprawnie. Coś jak to, ale to sortuje według wartości:

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

Jak wykonać arytmetykę?

Odpowiedz

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

Sidenote dla użytkowników python 2.x: Tutaj trzeba przekonwertować jeden z operantów na zmiennoprzecinkowy. np .: 'float (x [0])/x [1]' – cbo

+0

Dzięki @cbo za dodanie Senuote dla użytkowników 'python 2.x'. –

+0

Wierzę, że cbo sugerowało, że możesz edytować swoją odpowiedź, aby odzwierciedlić tę notatkę. W końcu komentarze niekoniecznie będą na zawsze. –

-1

Niech ta pomocna dla ciebie.

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

Dlaczego w dół głosowanie ?? –