使用可变数量的参数对列表(使用lambda)进行排序

时间:2014-04-15 11:29:39

标签: sorting lambda python-2.x

假设:

a = [[1,2,3], [1,2], [1,1,1,1]]

如何根据值的总和对a进行排序?

我尝试使用lambda,但是它因lambda错误而不允许使用可变数量的参数:

a.sort(lambda x: sum(x))
TypeError: <lambda>() takes exactly 1 arguments (2 given)

之前是一个简化的例子;我实际上试图使用另一个带有多个参数的函数......这确实改变了问题。

a.sort(lambda x: len(my_function("123", x)))

希望答案可以在基础python中完成。

2 个答案:

答案 0 :(得分:5)

a.sort(key=sum)  # Need the 'key' keyword, and don't bother with lambda here.

是你想要的。

<强>输出:

[[1, 2], [1, 1, 1, 1], [1, 2, 3]]

修改

要修复多参数示例,只需再次指定key参数:

a.sort(key=lambda arg1, arg2, etc: function(arg1, arg2, etc))

答案 1 :(得分:0)

试试这个,

>>> a = [[1,2,3], [1,2], [1,1,1,1]]
>>> print sorted(a, key=sum)
[[1, 2], [1, 1, 1, 1], [1, 2, 3]]
>>>