如何通过自定义函数对列表进行排序?

时间:2017-01-10 14:03:23

标签: python python-2.7 list sorting

我正在做我的小作业。我想用我定义的函数对列表进行排序。

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 个答案:

答案 0 :(得分: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]]