2017-02-19 43 views
3

我是新来的python,我试图创建一个函数接受作为输入列表的整数列表并返回该列表的排序版本,按每个子列表中整数的总和。以下是我迄今为止的代码。任何建议都会很棒。基于每个嵌套列表的总和列表排序列表

def sort_nested_lists (user_list): 
for list in user_list 
    x = sum(user_list)) 
    x = sorted(user_list) 
    return x 
print sort_nested_lists 

这是我的新代码:

user_list = raw_input("Please enter a list of integers: ") 
def sort_nested_lists(user_list): 
    return sorted(user_list,key = sum) 
print sort_nested_lists 

现在我得到的错误:

请输入整数列表:[5,2,7,5],[8 ,2,6,1],[3,1,8,9,5]]

任何额外的帮助将是伟大的!

回答

2

你不必做起来很复杂。只需使用以下一行代码

return sorted(user_list,key=sum) 

这就是全部。当您指定key时,sorted(..)将根据给定的功能比较两个元素,它将应用于user_list中的元素。所以这里它会根据它们元素的总和来比较两个列表。

+0

有趣的感谢输入!如果我正在尝试为问题使用函数参数,有关为什么下面的代码不会执行的任何想法? def sort_nested_lists(user_list): return sorted(user_list,key = sum) print sort_nested_lists – AvSmith

+0

@AvSmith可能因为你没有调用函数,为了调用函数,你必须做'sort_nested_lists(your_list)'。如果你调用它是正确的,你必须更具体地解释*代码是**不**执行*通过提供错误信息,意外输出等 –

2

要做到这一点,你可以调用sorted功能与sum

>>> my_list = [[1, 6, 3], [2,1,0], [10, 3, 9]] 
>>> sorted(my_list, key=sum) 
[[2, 1, 0], [1, 6, 3], [10, 3, 9]] 

得到的名单将在递增的顺序基于整数的子列表的总和进行排序