2017-02-19 21 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)'. Если вы правильно назовете, вы должны быть более конкретным объяснением * код ** NOT ** выполнение * путем предоставления сообщения об ошибке, неожиданного вывода и т. Д. –

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]] 

Полученный список будет отсортирован в порядке возрастания на основе суммы целых чисел в подсписках