0
votes

Python: Somme les éléments d'une liste s'il est plus long que 1

J'ai un problème simple:

J'ai une liste de listes, comme celle-ci: xxx

Je veux le transformer dans une liste de listes toutes de la longueur 1, où les sublistes> 1 sont résumés, comme celui-ci: xxx

Comment puis-je atteindre cette sortie? C'est ce que j'ai essayé: xxx

mais il ne fonctionne pas


3 commentaires

[[somme (x)] pour x en x]


Pourquoi cela fonctionnerait-il? Vous ne faire quelque chose avec la somme.


Pourquoi la peine de tester la longueur?


4 Réponses :


1
votes

Vous pouvez simplement créer une liste contenant un seul élément, la somme de la liste intérieure. xxx

par [somme (IL)] Vous créez cette nouvelle liste (qui soit membre de sum_list ) et l'init avec un élément.


1 commentaires

Identique que ceci Stackoverflow.com/questions/60018834/...



0
votes

Cela ne gagne pas plus simple que ce que Chris a dit dans son commentaire: [[somme (x)] pour x en x]

Votre code ne fonctionne pas car vous n'attribuez pas la somme résultant de votre liste "principale". Suite à votre exemple x [z] = [somme (x [z])] devrait fonctionner au lieu de somme (x [z]) . .


0 commentaires

0
votes

Juste au cas où vous recherchez une réponse différente (la réponse de @ Green est recommandée)

x = [[0], [4,5,6], [1], [4], [3, 4]]
y = []

for each_list in x:
    sum_of_elem_list = []
    sum_of_elem = 0;
    for each_elem in each_list:
        sum_of_elem+=each_elem;

    sum_of_elem_list.append(sum_of_elem)
    y.append(sum_of_elem_list)


0 commentaires

0
votes

Vous pouvez y parvenir en utilisant la fonction Réduire les fonctions de fonctionnement,

from functools import reduce
print([[reduce(lambda i,j: i+j, k)] for k in X])


0 commentaires