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 :

Enregistrer la valeur d'un élément d'une liste vers une variable, dynamiquement


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Par défaut Enregistrer la valeur d'un élément d'une liste vers une variable, dynamiquement
    Bonjour,
    J'ai une liste à deux dimensions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    liste = [[variable1, "valeur1", "parametre1"],
             [variable2, "valeur2", "parametre2"],
             [variable3, "valeur3", "parametre3"]]
    Et je cherche à parcourir cette liste pour, par exemple, enregistrer le résultat d'une opération qui utilise la valeur "valeur1" dans la variable "variable1".
    Evidemment, si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for element in liste:
       element[0] = fonction(element[1])
    ça ne fera pas ce que je veux puisque je veux que ce soit les variables correspondantes (variable1, variable2, ..) aux valeurs (respectivement valeur1, valeur2, ..) qui soient modifiées et pas nécessairement l'élément de la liste.
    Il y a-t-il un moyen de faire celà ?
    (Je pars peut-être sur une mauvaise piste en utilisant une liste ?)
    Merci

  2. #2
    Membre chevronné Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Par défaut
    ben ca dépend tu veux faire quoi avec tes variables une fois que tu les as affectées?

  3. #3
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Par défaut
    Je voulais pas en dire trop, histoire de pas trop surcharger mais c'est vrai qu'on peut pas trop comprendre ce que je veux faire.
    En fait, j'utilise ça dans une classe de gestion d'un gtk.TreeView.

    La liste contient autant d'élément qu'il y a de colonnes dans le TreeView et chaque élément est également une liste qui contient : le gtk.TreeViewColumn, le nom de la colonne et divers autres paramètres relatifs à cette colonne.

    La variable que je cherche à enregistrer contient dons le gtk.TreeViewColumn (pour pouvoir passer cette variable en argument d'une fonction pour supprimer la colonne, par exemple ...

    Pour le code complet, voir http://rafb.net/p/quFU1i66.html la liste en question est self.columnList

    En fait, on peut voir que je cherche à remplacer des expressions du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    self.column_name = self.AddListColumn(0, "Nom", 0)
    Puisque comme il y aura pas mal de colonnes, utiliser une liste pourrait éviter de devoir modifier partout dans le code si j'avais à ajouter une nouvelle colonne, par exemple.

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Pourquoi ne pas itérer sur les indices plutôt que sur les éléments de ta liste?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i in xrange(len(liste)):
       liste[i][0] = fonction(liste[i][1])

  5. #5
    Membre averti
    Inscrit en
    Avril 2003
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2003
    Messages : 20
    Par défaut
    Pourquoi pas ouais.
    Enfin, ça revient presque au même.
    Merci

    Sinon, concernant le problème : il est évident que je peux utiliser liste[0][0] au lieu de variable1 mais je choisi des variables avec des noms assez explicites pour savoir vers quoi elles pointent donc j'aimerai garder ça ...

    Il n'existe pas un moyen d'extraire un élément d'une liste pour l'utiliser en tant que nom de variable ?

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Je viens de comprendre. Ce que tu veux faire, c'est modifier la valeur de la variable dont la liste contient une référence ? Dans ce cas, je ne vois pas trop comment faire. Une solution élégante serait d'encapsuler cette variable dans un objet (exemple très basique mais suffisant):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class Conteneur(object):
        pass
    Ainsi, tu stockes le conteneur dans ta liste, et il te suffira d'affecter un attribut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for element in liste:
       element[0].val = fonction(element[1])

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 26/04/2012, 17h32
  2. Réponses: 4
    Dernier message: 25/03/2010, 17h01
  3. Réponses: 4
    Dernier message: 25/03/2009, 17h19
  4. Copier les enregistrements d'une table vers une table d'une autre DB
    Par karinette21 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/11/2008, 21h50
  5. Basuler un élément d'une liste vers une autre liste
    Par Daniel MOREAU dans le forum Access
    Réponses: 1
    Dernier message: 13/04/2006, 22h55

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