2017-02-19 46 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]] 

得到的名單將在遞增的順序基於整數的子列表的總和進行排序