Partage
  • Partager sur Facebook
  • Partager sur Twitter

référence listes

problèmes modifications 2 listes même avec référence différente

Sujet résolu
    10 avril 2021 à 1:07:20

    Bonsoir, 

    Je suis sur un projet et je suis bloqué sur un point. J'ai deux listes qui n'ont pas la même référence, pourtant quand je modifie l'une d'elle, l'autre fait de même.

    Voici le code en espérant que qqn aie la réponse : 

    def computeNextStep(list_to_compute):
        computed_list = list_to_compute[:]
    
        for j in range(1,len(list_to_compute)-1):
            for i in range(1,len(list_to_compute[0])-1):
                print(j, i, list_to_compute[j][i])
                if list_to_compute[j][i] == '_':
                    if getNeighbours(list_to_compute, i, j) in infos["naissance"]:
                        computed_list[j][i] = 'x'
                        for line in list_to_compute:
                            print(line)
                        print()
                        for line in computed_list:
                            print(line)
                        print()
                else:
                    if getNeighbours(list_to_compute, i, j) not in infos["survie"]:
                        computed_list[j][i] = '_'
        return computed_list
                    
    
    def getNeighbours(list_to_compute, i, j): 
        #count how many neighbours around
        count = 0
        for k in range(-1,2):
            if list_to_compute[j-1][i+k] == 'x':
                count += 1
            if list_to_compute[j+1][i+k] == 'x':
                count += 1
        if list_to_compute[j][i-1] == 'x':
            count += 1
        if list_to_compute[j][i+1] == 'x':
            count += 1
        return count

    et voici le résultat : 

    1 1 _
    1 2 _
    1 3 _
    1 4 _
    1 5 _
    1 6 _
    2 1 _
    2 2 _
    2 3 _
    2 4 _
    2 5 _
    2 6 _
    3 1 _
    3 2 _
    3 3 x
    3 4 _
    3 5 _
    3 6 _
    4 1 _
    4 2 _
    4 3 x
    4 4 x
    4 5 x
    4 6 _
    5 1 _
    5 2 _
    5 3 _
    5 4 _
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', 'x', '_', '_', '_', '_']
    ['_', '_', '_', 'x', 'x', 'x', '_', '_']
    ['_', '_', '_', '_', 'x', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', 'x', '_', '_', '_', '_']
    ['_', '_', '_', 'x', 'x', 'x', '_', '_']
    ['_', '_', '_', '_', 'x', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    
    5 5 _
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', 'x', '_', '_', '_', '_']
    ['_', '_', '_', 'x', 'x', 'x', '_', '_']
    ['_', '_', '_', '_', 'x', 'x', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', 'x', '_', '_', '_', '_']
    ['_', '_', '_', 'x', 'x', 'x', '_', '_']
    ['_', '_', '_', '_', 'x', 'x', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    ['_', '_', '_', '_', '_', '_', '_', '_']
    
    5 6 _
    6 1 _
    6 2 _
    6 3 _
    6 4 _
    6 5 _
    6 6 _

    merci d'avance pour vos réponses


    • Partager sur Facebook
    • Partager sur Twitter
      10 avril 2021 à 1:17:25

      Des listes de quoi ?
      • Partager sur Facebook
      • Partager sur Twitter

      Python c'est bon, mangez-en. 

        10 avril 2021 à 1:30:52

        josmiley a écrit:

        Des listes de quoi ?

        des listes de char, sur la deuxième photo que j'ai partagé on les voit

        • Partager sur Facebook
        • Partager sur Twitter
          10 avril 2021 à 1:56:03

          Cadogan a écrit:

          josmiley a écrit:

          Des listes de quoi ?

          des listes de char, sur la deuxième photo que j'ai partagé on les voit

          Non, vu l'indexation ceux sont des listes de séquences ... Des listes de listes que ça ne m'étonnerait pas.

          -
          Edité par josmiley 10 avril 2021 à 1:57:36

          • Partager sur Facebook
          • Partager sur Twitter

          Python c'est bon, mangez-en. 

            10 avril 2021 à 1:58:08

            josmiley a écrit:

            Cadogan a écrit:

            josmiley a écrit:

            Des listes de quoi ?

            des listes de char, sur la deuxième photo que j'ai partagé on les voit

            Non, vu l'indexation ceux sont des listes d'itérables ... Des listes de listes que ça ne m'étonnerait pas.

            ah oui autant pour moi j'ai mal compris ta question. Ce sont des listes de liste de char

            -
            Edité par Cadogan 10 avril 2021 à 1:59:41

            • Partager sur Facebook
            • Partager sur Twitter
              10 avril 2021 à 6:57:16

              computed_list = list_to_compute[:] fait bien une copie ... de références, puisque computed_list est une liste ... de listes. On a donc deux listes différentes qui contiennent les mêmes références vers d'autres listes.

              -
              Edité par josmiley 10 avril 2021 à 7:00:40

              • Partager sur Facebook
              • Partager sur Twitter

              Python c'est bon, mangez-en. 

                10 avril 2021 à 7:30:48

                En C, j'appellerais cela une liste de pointeurs.
                L=[['a','_', 'c'], ['d', '_', 'f'], ['g', '_', 'i']]
                M=[k[:] for k in L]
                Ça c'est mieux.
                t
                • Partager sur Facebook
                • Partager sur Twitter

                Le Tout est souvent plus grand que la somme de ses parties.

                  10 avril 2021 à 7:39:46

                  PierrotLeFou a écrit:

                  En C, j'appellerais cela une liste de pointeurs.
                  L=[['a','_', 'c'], ['d', '_', 'f'], ['g', '_', 'i']]
                  M=[k[:] for k in L]
                  Ça c'est mieux.
                  t

                  Pour des imbrications plus profondes on a copy.deepcopy()

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Python c'est bon, mangez-en. 

                    10 avril 2021 à 7:49:30

                    J'ai trouvé ceci qui pourrait aider le PO:
                    https://docs.python.org/3/library/copy.html
                    • Partager sur Facebook
                    • Partager sur Twitter

                    Le Tout est souvent plus grand que la somme de ses parties.

                      10 avril 2021 à 21:22:20

                      Je vous remercie c'est exactement ce que je cherchais ! Bonne soirée
                      • Partager sur Facebook
                      • Partager sur Twitter

                      référence listes

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown