2017-01-10 96 views
-2

我正在做我的小「家庭作業」。我想用我定義的函數對列表進行排序。如何通過自定義函數對列表進行排序?

for exp。

list = [[1], [1,2,3,4,5,6,7], [1,2,3], [1,2], [1,2,3,4], [1,2,3,4,5,6,7,8]] 
function1: (the length of every small list)/10 
function2: (the length of every small list)/12 
and the first 3 lists judged by function1, and the other by function2 

我想要的結果是什麼:

list = [[1],[1,2],[1,2,3],[1,2,3,4],[1,2,3,4,5,6,7,8],[1,2,3,4,5,6,7]] 

我已經可以不用函數排序其長度列表,所以請讓我知道,如果你有任何想法。 謝謝!

+1

通過列表的長度排序/ 10是完全一樣由列表... – RemcoGerlich

+1

附註的長度排序:只要你不這樣做整數除法(當你有一個小數除法結果時捨去),沒有保留'/ 10'的意思,排序順序也是一樣的。 – TidB

+1

[如何按照一定的標準對列表進行排序]可能的重複(http://stackoverflow.com/questions/33940432/how-to-sort-list-according-certain-criterion) –

回答

5

您可以使用內置的sorted()函數來實現它。您可以指定如何通過提供附加功能來排序迭代元素,如key。在這裏,您想按照元素的長度(即內部列表的長度)進行排序,因此您可以使用內置的len()函數。你也可以實現一個自定義的lambda函數。

alist = [[1], [1,2,3,4], [1,2], [1,2,3,4,5,6,7], [1,2,3], [1,2,3,4,5,6,7,8]] 
sorted_list = sorted(alist, key=len) 
print(sorted_list) 

輸出:

[[1], [1, 2], [1, 2, 3], [1, 2, 3, 4], [1, 2, 3, 4, 5, 6, 7], [1, 2, 3, 4, 5, 6, 7, 8]] 
+0

爲了愛Guido,請讓Python 3友好。紅利點數至少可以解釋一下這裏發生的事情。 – idjaw

+0

yeap。給我一秒 – MYGz

+0

有沒有這麼多解釋在這裏..我敢打賭,谷歌搜索問題的標題將導致OP在不到一分鐘的答案 –

相關問題