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 :

Valeur d'un tableau [Débutant(e)]


Sujet :

Python

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 2
    Par défaut Valeur d'un tableau
    Bonjour,

    un exemple valant mieux qu'un long discours, voici un exemple de session que j'ai fait :

    >>> matrice=[[0]]
    >>> tab=[5]
    >>> matrice.append(tab)
    >>> matrice.append(tab)
    >>> matrice[2][0] = 6
    >>> matrice
    [[0], [6], [6]]

    Donc, en somme : j'initialise chaque ligne de ma matrice à partir d'un tableau.
    Cependant, dès que je modifie le tableau, ou une des lignes de la matrice, la totalité des lignes de la matrice sont modifiées ! Ce que je ne veux absolument pas !
    Je n'aimerais avoir la modification que de la case que j'ai demandé !

    Je voudrais donc savoir ce qui se passe, et comment peut on initialiser les lignes d'une matrice à partir d'un tableau sans avoir ces lignes liées au tableau ?
    (une méthode pour récupérer uniquement la valeur de l'objet ?)
    (en gros, la dernière ligne devrait être [[0], [5], [6]]).

    Merci !

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 058
    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 : 4 058
    Par défaut
    Mouais, la solution semble douteuse, mais bon je m'en préoccupe pas.

    Concernant la syntaxe essaye plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    matrice=[[0]]
    tab=[5]
    matrice.append(tab[:])
    matrice.append(tab[:])
    matrice[2][0] = 6
    En résumé tu as ajouté la même référence à chaque fois, du coup, tu changes la valeur d'une liste, toute celle liée à la même référence modifie leur valeur.

    tab[:] -> copie de la liste

  3. #3
    Membre éclairé
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2015
    Messages
    52
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Belgique

    Informations professionnelles :
    Activité : Amateur
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 52
    Par défaut
    Tu pourras plus facilement visualiser le problème sur Python Tutor.

  4. #4
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 2
    Par défaut
    OK, il faut donc utiliser tab[:], merci pour ta réponse !

    Pourquoi dit tu par contre que la solution est douteuse ?

  5. #5
    Membre averti
    Femme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Septembre 2013
    Messages : 26
    Par défaut
    J'ai un problème similaire. Je souhaite simuler un tableau à l'aide d'un liste de listes.
    Le problème est illustré ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        ligne=[[0,0,0,0,0,0,0,0,0]]*2
        ligne[0][3]=3
        print(ligne)
        #le résultat est [[0,0,0,3,0,0,0,0,0],[0,0,0,3,0,0,0,0,0]]
    
        ligne=[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]
        ligne[0][3]=3
        print(ligne)
        #le résultat est [[0,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]
    
       ligne = []
          for i in range (1,3):
              ligne.append([])
          print(ligne)
          for i in range (1,3):
              for j in range(1,10):           
                  ligne[i-1].append([])
          ligne[0][3]=3
          print (ligne)
         #le résultat est [[0,0,0,3,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]
    Pourquoi ?
    Je ne peux donc pas initialiser le tableau (la liste de listes !) suivant le premier procédé.
    Merci pour vos explications à venir

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 707
    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 : 21 707
    Par défaut
    Citation Envoyé par Arbraz Voir le message
    Pourquoi ?
    Je ne peux donc pas initialiser le tableau (la liste de listes !) suivant le premier procédé.
    Merci pour vos explications à venir
    L'explication a déjà été donnée par Fred dans sa première réponse:
    En résumé tu as ajouté la même référence à chaque fois, du coup, tu changes la valeur d'une liste, toute celle liée à la même référence modifie leur valeur.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [VB6] recuperer des valeurs ds un tableau html avec vb!!
    Par leo13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/12/2004, 13h02
  2. comparer les valeurs d'un tableau
    Par nicerico dans le forum ASP
    Réponses: 4
    Dernier message: 19/08/2004, 11h20
  3. Compter les valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 6
    Dernier message: 30/03/2004, 13h29
  4. Récupération de valeurs d'un tableau
    Par leeloo076 dans le forum ASP
    Réponses: 12
    Dernier message: 25/03/2004, 10h59
  5. Décaler des valeurs dans un tableau
    Par sh2003 dans le forum Langage
    Réponses: 6
    Dernier message: 20/03/2004, 16h01

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