Из множества списков определить с максимальной суммой элементов (Python)

Тема: 
Функции

Допустим, генерируются десять списков, состоящих из случайных чисел. Требуется выделить из них тот, сумма элементов которого окажется максимальной.

Поскольку будет генерироваться множество списков, то разумно написать функцию, в которой переданный ей в качестве аргумента список будет заполняться. Также здесь же удобно будет вычислять сумму элементов списка. Если в качестве аргумента функции передается список, то он не копируется, а просто связывается с локальной переменной-параметром функции, и все что происходит со списком внутри функции отразится и в основной ветке программы. Полученную же сумму можно возвращать с помощью оператора return.

Если нет необходимости хранить все десять списков, то можно "забывать" очередной список, если сумма его элементов оказывается не больше, чем у какого-либо списка ранее. Т.е. в функцию можно передавать одну и ту же переменную. Если возвращаемое ей значение (сумма) оказывается больше, чем вычисленное ранее, то список надо запомнить в отдельной переменной.

Если требуется знать, какой по счету список обладал максимальной суммой элементов, то необходима еще одна переменная для хранения номера вызова функции, когда была получена максимальная сумма.

Чтобы удостовериться, что список был найден верно, можно выводить каждый список на экран внутри функции, а также полученную сумму.

from random import random
 
def array(a):
    s = 0
    for i in range(15):
        a[i] = int(random()*50)
        print("%4d" % a[i], end='')
        s += a[i]
    print(" - %d" % s)
    return s
 
arr_new = [0]*15
sum_max = 0
for i in range(10):
    sum_new = array(arr_new)
    if sum_new > sum_max:
        sum_max = sum_new
        index = i+1
        arr_max = arr_new
 
print("%d-й массив имеет максимальную сумму элементов:" % index)
print(arr_max, ' - ', sum_max)

Пример выполнения:

  37   8  24   8   9   9  32  24  15  35  43  18   3  37  39 - 341
  22  35  16  31  45  36  36  14  36  49  48  23   5  39  46 - 481
  18  16   9  30  28  31  13  14  29  48  29  22  41  31  27 - 386
  21  24  40  14  23  49  46   5  28  18   9  29  38  23   4 - 371
  25   7   4  48  48  45  21  33  32  30  16  18   3  28  15 - 373
  40  40   0  16   0   1  49  33   4   2  44  10  45  19  23 - 326
  11  31  33   0  27  45  17  41  37   8  18  16  40  16  25 - 365
  43  41  11  36  45  23  23  10   2  17  48  48  19   8  49 - 423
  15  13  38  20  23  47   8  10  34  22  42  41  27  38  48 - 426
  25  35  10   0  37   6   9   3  37  18   1  32  27  30  49 - 319
2-й массив имеет максимальную сумму элементов:
[25, 35, 10, 0, 37, 6, 9, 3, 37, 18, 1, 32, 27, 30, 49]  -  481

используя sum и sort

from random import randint
 
a = [[] for x in range(10)]
 
for i in range(10):
    new_arr = [randint(0,49) for x in range(15)]
    a[i] = (sum(new_arr),i,new_arr)
 
a.sort()
a.reverse()
 
#s,i,n = a[0]
#print 'line %2d : %s : sum %s' % (i, ' '.join(["%4d" % x for x in n]), s)
 
for s,i,n in a:
    print 'line %2d : %s : sum %s' % (i, ' '.join(["%4d" % x for x in n]), s)

sum используется для суммирования списка. sort - для сортировки. reverse - для обращения списка. теперь список с самой большой суммой - верхний. можно извлечь его (закомментировано), он будет самым верхним, a[0]. а можно - весь список в порядке убывания суммы.