Как получить наименьшую сумму из 3 элементов в матрице - PullRequest
0 голосов
/ 19 сентября 2019
A = [[1, 2, 4], 
        [3, 5, 6],
        [7,8,9]]


def sumof(A,3):

Здесь нужно найти наименьшую сумму из 3 элементов 1 + 2 + 3 = 6, поэтому на выходе получается (1,2,3)

Можем ли мы сделать это с помощью zip

Ответы [ 2 ]

2 голосов
/ 19 сентября 2019

Если у вас большой массив, вы можете сделать это без сортировки списка, что немного быстрее, чем

from operator import add
from functools import reduce

A = [[1, 2, 4],
     [3, 5, 6],
     [7,8,9]]

addlists = lambda l: reduce(add, l)
list_A = addlists(A)
result = [list_A.pop(list_A.index(min(list_A))) for _ in range(3)]

Это немного сложнее, хотя импортированные модули действительно полезны.

2 голосов
/ 19 сентября 2019

одно базовое решение, преобразовать вложенный список в плоский список, отсортировать его, отсортировать по спискам и суммировать:

A = [[1, 2, 4],
        [3, 5, 6],
        [7,8,9]]


def sumof(A, n):
    # convert nested list into flat list 
    flat_list = [item for sublist in A for item in sublist]
    return sum(sorted(flat_list)[:n])

print (sumof(A,3))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...