Python: Somme de l'élément de n-listes
quelqu'un peut-il me donner une astuce comment agrégation (somme), des éléments de plusieurs listes?
Par exemple, j'ai 20 liste avec un nom semblable motif, chaque représentant les dépenses de consommation au fil du temps (c'est à dire de l'index) du ménage (agent):
c_agent_0 = [10.0, 11.0, ...]
.
.
.
c_agent_19 = [8.0, 9.0, ...]
J'ai besoin de quelque chose comme valeur = somme des indices que ce soit dans c_agent_*[]
Merci!
Pouvez-vous illustrer votre question, il est encore un exemple, s'il vous plaît?
c_agent_0
est un immense drapeau rouge - Si vous avez une charge de variables avec numéroté les noms, vous voulez une liste à la place. Ici, vous pouvez tout simplement d'une liste de listes.OriginalL'auteur JohnDoe | 2013-07-17
Vous devez vous connecter pour publier un commentaire.
Utilisation zip "combiner" les listes en un seul, alors la somme des éléments de chaque indice:
imprime
zip()
ne peut que vous souhaitiez donner une meilleure explication. Elle transpose l'objet iterable iterables (la première ligne devient la première colonne, etc...).Ok, d'accord, merci. Je viens d'ajouter un lien vers les docs, marqué combiner avec des guillemets, et l'amélioration de l'exemple de code.
À mon humble avis, il est toujours trompeur de se référer à zip comme la "combinaison" des listes en "seul". Qui le fait ressembler à une "fusion". J'ai eu à lire l'ensemble du post attentivement, pour voir ce qui se passe. Peut-être dire quelque chose comme "Utiliser zip à faire une liste de listes, où la première sous-liste contient le premier élément de chaque liste d'origine, etc."
OriginalL'auteur alecxe
Si vous voulez faire cela pour tous les colonnes, puis alecxe réponse est le meilleur, si vous voulez seulement un seul (ou un sous-ensemble), alors il est un peu coûteux, il fait beaucoup de choses inutiles de traitement.
Pour une seule colonne (la troisième dans ce cas):
Nous utilisons le
sum()
construit en somme, et un simple compréhension de liste pour obtenir le n-ième élément de chaque liste.Comme indiqué dans mon commentaire, cela suppose que vous avez une liste de listes, par opposition à une charge de variables:
À l'aide de structures de données efficace de rendre votre code beaucoup, beaucoup mieux.
Mentionné précédemment
zip()
en fonction de la solution peut également être facilement modifié pour fonctionner avec cette structure de données:Ici, nous utilisons la
*
opérateur pour décompresser la liste que les arguments pourzip()
.OriginalL'auteur Gareth Latty
Vous pouvez créer une liste de listes, et ensuite utiliser des tableaux numpy:
Noter qu'une compréhension de liste est le plus susceptible plus rapide; c'est juste une solution avec numpy :).
Édité ma réponse :3
Je vous remercie beaucoup, le point est que le nombre de listes pourrait devenir grand (par exemple 400 ménages), de sorte que toute solution qui comprend la saisie des noms de la liste n'est pas très pratique. Je ne pouvais pas comprendre si loin comment utiliser la chaîne de caractères génériques * et de faire la somme de toutes les listes qui s'adapte sur le modèle de nom de c_agent_*
Le point est que
mylist
devrait être construit sans la construction dec_agent_0
,c_agent_1
, etc... individuellement. Structures de données vous empêcher d'avoir à taper une tonne de code répétitif.mylist = [[10.0, 11.0, ...], [13.0, 14.0, ...], ...]
ou si vous construisez les données d'une autre manière, puis modifiez votre code pour produire une liste de listes.vous avez raison, j'ai déjà créé maliste avec une boucle. Merci.
OriginalL'auteur TerryA