2017-01-10 99 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在不到一分钟的答案 –

相关问题