Partage
  • Partager sur Facebook
  • Partager sur Twitter

sauvegarder une liste avant modification

Sujet résolu
    14 mai 2013 à 12:11:26

    Bonjour,

    J'ai une liste1 qui va être modifié , et ce que je voudrais c'est garder (sauvegarder) liste1 avant la modification .

    donc je dis

    (par exemple, liste1=[1,2,3])

    >>> liste0=liste1

    je modifie la liste1

     >>> liste1.append(4)

    donc liste1=[1,2,3,4]

    Mais liste0 est égal aussi à [1,2,3,4]

    Et je voudrais que liste0 soit égal à [1,2,3] ( à liste1 avant la modification)

    • Partager sur Facebook
    • Partager sur Twitter
      14 mai 2013 à 12:51:31

      La solution:

      list0 = list1[:]
      au lieu de:
       list0 = list1
      • Partager sur Facebook
      • Partager sur Twitter
        14 mai 2013 à 14:13:19

        dans l'exemple ca marche , mais pas dans mon programme ^^ , je crois que ca viend de cal2 (quand je la retire , j'ai bien ce que je veux)

        g=[[0,0,0,0,0,0,0,0,0],
            [0,8,5,6,0,4,2,7,0],
            [2,3,0,9,8,7,0,6,4],
            [0,7,4,5,0,6,8,2,0],
            [0,0,2,0,0,0,3,0,0],
            [0,5,6,2,0,1,9,4,0],
            [4,1,0,7,5,2,0,8,9],
            [0,6,8,1,0,9,7,3,0],
            [0,0,0,0,0,0,0,0,0]]

        def casesVides2(g):
                res=[]
                g2=g[:]
                for l in range(3):
                        for c in range(3):
                                if g[l][c]==0:
                                        
                                        ligne=[g[l][c] for l in range(9) if g[l][c]!=0]
                                        colonne=[g[l][c] for c in range(9) if g[l][c]!=0]
                                        carre=square2(g,l,c)
                                        candidats=[i for i in range(1,9) if i not in ligne+colonne+carre]
                                        res+=ligne,colonne ,candidats
                                        cal2(res,l,c,g)
                                        res=[]
                print(g2)



        def cal2(res,l,c,g):
                if res[2]!=[]:
                        if  len(res[2])==1 :
                                 g[l][c]=str(res[2][0])
        def square2 (g,l,c):
                
                if l<3 : 
                        a=0
                if 2<l<6 :
                        a=1
                if 5<l<9 :
                        a=2
                if c<3 : 
                        b=0
                if 2<c<6 :
                        b=1
                if 5<c<9 :
                        b=2
                
                carre=[g[x][y] for x in range (9) for y in range (9) if (x//3)==a and (y//3)==b and g[x][y]!=0]


        -
        Edité par soraka 14 mai 2013 à 14:14:53

        • Partager sur Facebook
        • Partager sur Twitter
          14 mai 2013 à 15:17:24

          Ca vient du fait que tu as une liste de listes. La solution:

          from copy import deepcopy

          list0 = deepcopy(list1)
          • Partager sur Facebook
          • Partager sur Twitter
            14 mai 2013 à 15:32:41

            merci de votre aide

            -
            Edité par soraka 14 mai 2013 à 16:38:28

            • Partager sur Facebook
            • Partager sur Twitter

            sauvegarder une liste avant modification

            × 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