IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2020
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Faire la somme des nombres se trouvant dant une liste bidimensionnel
    Bonjour,

    Je cherche le moyen de faire comme indiqué dans le titre la somme des nombres se trouvant dans une liste bidimensiionnel.
    J'ai parcouru plusieurs site, mais je n'ai rien trouvé de concluant.
    Merci d'avance pour vos réponses.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab1 = [[1], [2], [3], [4], [5]]
    print(tab1)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 17 559
    Points : 30 296
    Points
    30 296
    Par défaut
    Salut,

    Pour faire une somme, on peut initialiser une variable somme à zéro puis parcourir la liste pour en extraire à chaque itération l'entier à ajouter. Ce genre d'opération "simple" se trouvera plus dans les tutos que sur Internet.

    On peut faire plus simple avec sum et du Python un peu plus avancé.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2020
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Effectivement avec une liste simple, la fonction 'sum' fonctionne parfaitement et me retourne bien sur cette exemple le chiffre : 15.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab = [1, 2, 3, 4, 5]
    print(sum(tab))
    Par contre pour la liste bidimensionnel ça ne marche pas, on obtient le message suivant : TypeError: unsupported operand type(s) for +: 'int' and 'str'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ab1 = [[1, 2, 3, 4, 5],
           [1, 2, 3, 4, 5]]
    print(sum(tab1))
    J'ai bien essayé la méthode ''.join() mais ça n'est pas concluant non plus.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 17 559
    Points : 30 296
    Points
    30 296
    Par défaut
    Citation Envoyé par Dundruma Voir le message
    Par contre pour la liste bidimensionnel ça ne marche pas, on obtient le message suivant : TypeError: unsupported operand type(s) for +: 'int' and 'str'
    sum ne sait pas ajouter des listes.

    Mais si vous essayez de faire cette somme avec une boucle "for" vous auriez le même problème et la même erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> tab1 = [[1, 2, 3, 4, 5],
    ...        [1, 2, 3, 4, 5]]
    >>> s = 0
    >>> for e in tab1:
    ...     s += e
    ...
    Traceback (most recent call last):
      File "<stdin>", line 2, in <module>
    TypeError: unsupported operand type(s) for +=: 'int' and 'list'
    >>> sum(tab1)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unsupported operand type(s) for +: 'int' and 'list'
    Dans les 2 cas, pour accéder aux éléments d'une liste de listes, il faut faire une double boucle (boucle imbriquée).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre expert
    Homme Profil pro
    Inscrit en
    octobre 2011
    Messages
    2 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2011
    Messages : 2 494
    Points : 3 226
    Points
    3 226
    Par défaut
    Salut,

    Il suffit d'utiliser sum sur chaque sous-liste et faire la somme des sous-sommes...

  6. #6
    Membre éclairé
    Homme Profil pro
    BTS SN IR
    Inscrit en
    mai 2017
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 21
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : BTS SN IR

    Informations forums :
    Inscription : mai 2017
    Messages : 512
    Points : 700
    Points
    700
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    sum ne sait pas ajouter des listes.
    Sum ne fait que qu'utiliser add sur un itérable, il suffit de lui dire de commencer par une liste.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> t = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
    >>> sum(t, [])
    [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
    >>> sum(sum(t, []))
    30
    le sum intérieur ne fait qu'additionner les deux listes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> sum([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5]], start=[])
    [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
    Dans le cas où les listes ne sont pas uniforme on préférera se tourner vers des méthodes de mise à plat de liste plus poussé que ce que sum peux faire

  7. #7
    Rédacteur
    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    février 2009
    Messages
    6 386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : février 2009
    Messages : 6 386
    Points : 23 020
    Points
    23 020
    Billets dans le blog
    116
    Par défaut


    Citation Envoyé par flapili Voir le message
    [...] Dans le cas où les listes ne sont pas uniforme on préférera se tourner vers des méthodes de mise à plat de liste plus poussé que ce que sum peux faire
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from itertools import chain
     
    t = [[1, 2, 3, 4, 5, 6], [7, 8, 9], [10, 11, 12, 13, 14, 15], [16, 17]]
     
    somme = 0
    for item in chain.from_iterable(t):
        somme += item
     
    print(somme)

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 17 559
    Points : 30 296
    Points
    30 296
    Par défaut
    Salut,

    Citation Envoyé par flapili Voir le message
    Sum ne fait que qu'utiliser add sur un itérable, il suffit de lui dire de commencer par une liste.
    Ce n'est pas ce que je voulais dire mais bien vu.


    Citation Envoyé par danielhagnoul Voir le message
    Par exemple :
    sum(sum(t, start=[])) fonctionne aussi pour des listes de taille différente.

    Pas uniforme pourrait être:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t = [[1, 2, 3, 4, 5, 6], [7, 8, 9], [10, 11, [12, 13, 14, 15]], [16, 17]]
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    avril 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2020
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous,

    J'ai retenu la réponse de Beginner pour résoudre ma réponse en créant des sous menus de sum:
    Exemple : pour calculer une ligne comprenant 5 listes dans une liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab = [[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
    Je crée une seule liste puis j'utilise la somme de x listes que je veux calculer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tab1 = [[1, 2, 3, 4, 5]
    print(sum(tab1) + (sum(tab1)))
    print(sum(tab1) + (sum(tab1)) + (sum(tab1) + (sum(tab1) + (sum(tab1))))) # Attention de ne pas se tromper dans le nbre de parenthèses.
    Mais bien sur encore plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab = [1, 2, 3, 4, 5]
    print(sum(tab) * 5)  # ici j'additionne 5 listes
    J'obtiens bien pour le premier print : 30 et pour le deuxième print : 75

    Merci à tous d'avoir pris le temps de répondre au sujet, je clos le sujet.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    17 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2008
    Messages : 17 559
    Points : 30 296
    Points
    30 296
    Par défaut
    Salut,

    Citation Envoyé par Dundruma Voir le message
    Mais bien sur encore plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tab = [1, 2, 3, 4, 5]
    print(sum(tab) * 5)  # ici j'additionne 5 listes
    Non: vous multipliez juste par 5 la somme des nombres de la liste.
    N'oubliez pas que la machine ne vous dira jamais que vous écrivez n'importe quoi: à vous de comprendre ce que vous écrivez (d'où la nécessité d'un apprentissage).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire la somme des plus grandes valeurs d'une colonne
    Par cookie girl dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/01/2019, 08h52
  2. [XL-2003] je voulais faire la somme des nombre comment faire ?
    Par aminepop dans le forum Excel
    Réponses: 13
    Dernier message: 03/08/2010, 21h54
  3. somme des nombres de doublon d'une colonne
    Par Mademoiselle_Carly dans le forum Requêtes
    Réponses: 10
    Dernier message: 03/03/2010, 13h18
  4. Réponses: 1
    Dernier message: 23/01/2007, 18h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo