4 votes

Somme d'une liste imbriquée sans utiliser la fonction SUM (exercice)

J'essaie d'écrire une fonction qui prend la somme de chaque liste et renvoie les valeurs individuelles dans une nouvelle liste unique. Par exemple

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

devient

[15, 15, 15]

Ce que j'ai jusqu'à présent :

def row_sums(square):
    total_list = []
    total = 0
    for i in square:
        for j in i: 
            total += j
        total_list.append(total)
    return total_list    

Mais cela ne fait qu'accumuler les listes les unes sur les autres, ce qui donne.. :

[15, 30, 45] 

Je ne sais pas comment séparer les sommes de chaque liste ici. La fonction SUM n'est pas autorisée ici car il s'agit d'un exercice sur les boucles imbriquées.

Merci.

-1voto

shiva Points 1325

Vous pouvez également le faire en utilisant map et la compréhension de la liste comme :

l=[[2, 7, 6], [9, 5, 1], [4, 3, 8]] 
a,b,c=[x for x in l]
map(lambda x,y,z:x+y+z, a,b,c)

-2voto

Dozy Sun Points 31

[sum(i) for i in zip(*[[2, 7, 6], [9, 5, 1], [4, 3, 8]])]

bultin zip func est ce dont vous aviez exactement besoin

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X