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 :

Liste de Liste et methode append [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Par défaut Liste de Liste et methode append
    Bonjour

    je suis débutant en python

    j'essaie de créer une liste de liste avec le code suivant

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    chariotage=[]
     
    ligne_chariotage=[]
     
     
    ligne_chariotage.append("1er")
    ligne_chariotage.append("2eme")
    ligne_chariotage.append("3eme")
    print("ligne chariotage 1",ligne_chariotage)
    chariotage.append(ligne_chariotage)
     
    i=0
    for ligne in chariotage:
        print (i,ligne)
        i+=1
     
    print("chariotage",chariotage)
    ligne_chariotage.clear()
    print("ligne_chariotage après clear",ligne_chariotage)
    ligne_chariotage.append("4eme")
    ligne_chariotage.append("5eme")
    ligne_chariotage.append("6eme")
     
    print("ligne chariotage 2",ligne_chariotage)
    chariotage.append(ligne_chariotage)
     
    i=0
    for ligne in chariotage:
        print (i,ligne)
        i+=1
     
     
    print("0=",chariotage[0],"1=",chariotage[1],"Total=",chariotage)
    Le programme me retourne le résultat suivant

    ligne chariotage 1 ['1er', '2eme', '3eme']
    0 ['1er', '2eme', '3eme']
    chariotage [['1er', '2eme', '3eme']]
    ligne_chariotage après clear []
    ligne chariotage 2 ['4eme', '5eme', '6eme']
    0 ['4eme', '5eme', '6eme']
    1 ['4eme', '5eme', '6eme']
    0= ['4eme', '5eme', '6eme'] 1= ['4eme', '5eme', '6eme'] Total= [['4eme', '5eme', '6eme'], ['4eme', '5eme', '6eme']]
    Je ne comprends pas pourquoi le programme avec la méthode append me modifie la valeur de chariotage[0].

    Merci par avance pour votre aide

    l

  2. #2
    Invité
    Invité(e)
    Par défaut
    On a eu une question similaire il y a peu ! Lien -ici-
    Pour commencer il faut savoir s'il est vraiment utile de faire ce que vous faites...
    Ensuite, copier la liste de la façon que vous voulez si vous intervenez encore dessus !
    Moi je vous conseille ce qui suit, mais il existe des modules pour certaines versions de python qui n'avaient pas encore ce copy() et d'autres méthodes.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    chariotage=[]
     
    ligne_chariotage=[]
     
     
    ligne_chariotage.append("1er")
    ligne_chariotage.append("2eme")
    ligne_chariotage.append("3eme")
    print("ligne chariotage 1",ligne_chariotage)
    chariotage.append(ligne_chariotage.copy())
     
    i=0
    for ligne in chariotage:
        print (i,ligne)
        i+=1
     
    print("chariotage",chariotage)
    ligne_chariotage.clear()
    print("ligne_chariotage après clear",ligne_chariotage)
    ligne_chariotage.append("4eme")
    ligne_chariotage.append("5eme")
    ligne_chariotage.append("6eme")
     
    print("ligne chariotage 2",ligne_chariotage)
    chariotage.append(ligne_chariotage.copy())
     
    i=0
    for ligne in chariotage:
        print (i,ligne)
        i+=1
     
     
    print("0=",chariotage[0],"1=",chariotage[1],"Total=",chariotage)
    Résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ligne chariotage 1 ['1er', '2eme', '3eme']
    0 ['1er', '2eme', '3eme']
    chariotage [['1er', '2eme', '3eme']]
    ligne_chariotage après clear []
    ligne chariotage 2 ['4eme', '5eme', '6eme']
    0 ['1er', '2eme', '3eme']
    1 ['4eme', '5eme', '6eme']
    0= ['1er', '2eme', '3eme'] 1= ['4eme', '5eme', '6eme'] Total= [['1er', '2eme', '3eme'], ['4eme', '5eme', '6eme']]

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Citation Envoyé par PLafargue64 Voir le message
    Je ne comprends pas pourquoi le programme avec la méthode append me modifie la valeur de chariotage[0].
    Si vous fabriquez un objet composé d'autres objets, comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> A = [1, 2, 3]
    >>> B = [ A, A ]
    >>> B
    [[1, 2, 3], [1, 2, 3]]
    çà ressemble à un tableau à deux dimensions.

    Si on modifie A, on verra côté B toutes les occurrences de A modifiées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    >>> A[0] = 'xx'
    >>> B
    [['xx', 2, 3], ['xx', 2, 3]]
    >>>
    Donc B = [ A, A] n'est pas fabriquer un B avec 2 copies de A mais fabriquer un B avec deux références/pointeurs vers le même objet A.

    Subtil?

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

  4. #4
    Candidat au Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2020
    Messages : 2
    Par défaut
    Bonsoir

    Merci beaucoup pour vos 2 réponses

    Cordialement

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

Discussions similaires

  1. Réponses: 25
    Dernier message: 17/01/2015, 17h31
  2. List.GetItemById Method (String)
    Par fireborn dans le forum Développement Sharepoint
    Réponses: 8
    Dernier message: 28/05/2013, 14h12
  3. liste deroulante method get
    Par moza2409 dans le forum Langage
    Réponses: 27
    Dernier message: 18/07/2012, 12h07
  4. list et methodes virtuelles
    Par benzoben dans le forum Langage
    Réponses: 10
    Dernier message: 02/03/2011, 16h28
  5. Recuperer une liste de methode a partir d'un fichier
    Par rosty38 dans le forum Général Python
    Réponses: 6
    Dernier message: 06/10/2010, 13h14

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