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

Python Discussion :

Boucle sur une matrice


Sujet :

Python

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 69
    Points : 41
    Points
    41
    Par défaut Boucle sur une matrice
    Bonjour a tous,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maListe = maFonction(variable1, variable2, variable3)
    for elementDeMaListe in maListe:
      maMatrice = maFonction2(elementDeMaListe)
    #maMatrice est une matrice de deux colonnes et trois lignes
    Ce que je voudrais faire, c'est la somme des valeurs numeriques contenues dans la deuxieme colonne de ma matrice.

    Auriez vous une idee ?
    Je vous remercie par avance.

    FS

  2. #2
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> matrix
    [[0, 35], [0, 43], [0, 33]]
    >>> sum([line[1] for line in matrix])
    111
    Je vous conseille quand même l'utilisation de numpy pour des matrices ou autres tableaux
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2010
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 69
    Points : 41
    Points
    41
    Par défaut
    Bonjour Fred et merci pour votre reponse,

    Si je comprends bien, la boucle va traiter le tuple [0,35] puis [0, 43] et ainsi de suite ?

    Je fais un essai selon votre conseil :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    maListe = maFonction(variable1, variable2, variable3)
    for elementDeMaListe in maListe:
      maMatrice = maFonction2(elementDeMaListe)
      sommeDeLaColonne = sum([line[1] for line in maMatrice])
    #maMatrice est une matrice de deux colonnes et trois lignes
    Qu'en pensez vous ?

    FS

  4. #4
    Membre éprouvé

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Points : 1 273
    Points
    1 273
    Par défaut
    Ça devrait marcher, oui.

    Petite précision*: si python 2.7 ou 3.x, préférer un generator pur, au lieu de reconstruire une liste.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> l = [[1, 11], [2, 22], [3, 33]]
    >>> [e[1] for e in l]
    [11, 22, 33]
    >>> (e[1] for e in l)
    <generator object <genexpr> at 0x7fd5b2aa6190>
    Alors que la syntaxe [e[1] for e in l] (appelée “list comprehension”) construit une nouvelle liste, la seconde (e[1] for e in l) (dans le cas d’un appel de fonction comme sum, on peut même se passer des parenthèses suplémentaires*: sum(e[1] for e in l)) retourne un simple iterateur.

    Ici, ça n’a aucune importance, mais sur une liste de plusieurs centaines de milliers d’éléments, on gagne beaucoup en mémoire et en temps de calcul…

  5. #5
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 824
    Points : 7 120
    Points
    7 120
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maListe = maFonction(variable1, variable2, variable3)
    for elementDeMaListe in maListe:
      maMatrice = maFonction2(elementDeMaListe)
      sommeDeLaColonne = sum([line[1] for line in maMatrice])
    plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    maListe = maFonction(variable1, variable2, variable3)
    for elementDeMaListe in maListe:
        maMatrice = maFonction2(elementDeMaListe)
        sommeDeLaColonne = sum(line[1] for line in maMatrice)
    car +1 pour mont29

    Veuillez respecter la PEP8 (4 espaces pour l'indentation), merci
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

Discussions similaires

  1. [Débutant] Boucle sur une matrice dont la taille diminue au fur et à mesure
    Par Bubulle31 dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/07/2011, 11h10
  2. [XSLT] Faire une boucle sur une variable [i]
    Par PoT_de_NuTeLLa dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/06/2010, 12h45
  3. Suppression d'une dimension sur une matrice
    Par damleg dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/04/2007, 14h59
  4. Réponses: 8
    Dernier message: 15/06/2006, 20h56
  5. référencement sur une matrice
    Par bni dans le forum C++
    Réponses: 3
    Dernier message: 24/03/2005, 00h06

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