Предложение для лучшего решения - Python - PullRequest
0 голосов
/ 15 января 2020

Я изучаю python с последних нескольких дней, я прочитал проблему на сайте, где они предоставили решение с какой-то встроенной функцией. Я пытался сделать это без него, не могли бы вы проверить, правильно ли я это сделал или это должно быть сделано с некоторыми другими логами c.

Проблема: Напишите программу Python, чтобы найти список в списке списков, чья сумма элементов самая высокая.

Решение:

Код

num = [1,2,3], [4,5,6], [10,11,12], [7,8,9], [87,6,9], [87,7,9]

def func(l):
#function will return the element (list) whose sum is greater

    res = []
    flag = 0
    for index, items in enumerate(l):
        total = 0
        for item in items:
            total = total + item
            res.append(total)
            if total > res[index]:
                flag = index

    return l[flag]

#function call
print(func(num))

Ответы [ 2 ]

2 голосов
/ 15 января 2020

Нет, ваш код неверен. Проблема со списком res. Не уверен, что это должно быть сделано, но вы просто продолжаете добавлять элементы, а затем проверяете элемент по индексу текущего внешнего l oop. Вместо этого вы должны просто следить за best_sum, замеченным до сих пор. Кроме того, я бы предложил использовать более подходящие имена переменных.

def func(l):
    best_sum = 0
    best_index = 0
    for index, items in enumerate(l):
        total = 0
        for item in items:
            total = total + item
        if total > best_sum:
            best_index = index
            best_sum = total
    return l[best_index]

num = [1,2,3], [4,5,6], [10,11,12], [7,8,9], [87,6,9], [87,7,9], [1,1,1]
print(func(num))

Конечно, используя встроенные функции max и sum, вы можете просто сделать

print(max(num, key=sum))
1 голос
/ 15 января 2020

Если вам нужна фактическая сумма, вы можете взять максимум суммы каждого списка.

m = max(sum(x) for x in num)

Если вы хотите список:

for x in num:
    if sum(x) == m:
        print(x)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...