2017-03-15 2 views
1

J'essaie d'insérer un élément dans la liste ci-dessous (c5) et d'obtenir une nouvelle liste (c6) lorsque des éléments consécutifs de la liste ne sont pas identiques. Cette insertion m'emmène en boucle infinie et je dois tuer le programme manuellement pour arrêter le programme. Quelqu'un peut-il m'aider à comprendre ce comportement étrange de List en python?Python insérant l'élément dans le comportement étrange de la boucle infinie

Merci à l'avance

c5=['03-03-2017 00:00', '03-03-2017 00:00', '03-03-2017 00:00', '03-03-2017 00:00', '03-03-2017 00:00', '04-03-2017 00:00', '04-03-2017 00:00', '06-03-2017 00:00', '06-03-2017 00:00', '06-03-2017 00:00', '06-03-2017 00:00', '06-03-2017 00:00', '06-03-2017 00:00', '06-03-2017 00:00', '06-03-2017 00:00', '06-03-2017 00:00', '07-03-2017 00:00', '07-03-2017 00:00', '07-03-2017 00:00', '07-03-2017 00:00', '07-03-2017 00:00', '07-03-2017 00:00', '07-03-2017 00:00', '08-03-2017 00:00', '08-03-2017 00:00', '08-03-2017 00:00', '09-03-2017 00:00', '09-03-2017 00:00', '09-03-2017 00:00', '09-03-2017 00:00', '09-03-2017 00:00', '09-03-2017 00:00', '10-03-2017 00:00'] 

c6=c5 

x=0 
for d in c5: 
    if(x<(len(c5)-1)): 
     if(d != c5[x+1]): 
      c6.insert(x+1,'Hurray') 
      print(x) 
     x+=1 

print(c6) 
+0

'c6 = c5' ne fait pas de copie. Voir https://nedbatchelder.com/text/names.html – user2357112

+0

Copie possible de [Comment cloner ou copier une liste?] (Http://stackoverflow.com/questions/2612802/how-to-clone-or-copy -a-list) – TemporalWolf

Répondre

1

c5 et c6 référence le même objet de liste en raison de:

c6=c5 

Iteration par c5 en combinaison avec l'ajout de c6 qui fait référence à la même liste signifie itérer une liste pendant que vous ajoutez des éléments.

Faire c6 une copie en utilisant:

c6 = c5[:] 

entre autres options.

+0

Cela fonctionne, merci pour la clarification. –