[Python] Tableaux qui s'actualisent en même temps

Tableaux qui s'actualisent en même temps [Python] - Python - Programmation

Marsh Posté le 23-11-2018 à 13:20:15    

Bonjour je suis en train de créer un petit programme python, et j'ai un souci concernant une partie de mon code : j'ai 2 tableaux qui s'actualisent en même temps, c'est à dire que si j'assigne une nouvelle valeur à un des indices du tableau, alors l'indice de l'autre tableau va aussi obtenir cette valeur sans que je lui ai demandé quoi que ce soit, et j'ai aucune idée de comment ça se fait.
 
Voici la partie du code qui pose problème :  
 

Code :
  1. explo=0
  2.             fin=0
  3.             prem=0
  4.             maxslotepow2=maxslotepow #j'ai crée les 3 variables "2" pour pouvoir les modifier sans toucher aux variables originales
  5.             maxslotecap2=maxslotecap
  6.             slotidepow2=slotidepow
  7.             while explo<nslot:
  8.                 maxepow=[i for i,x in enumerate(maxslotepow2) if x==max(maxslotepow2)]
  9.                 maxecap=[i for i,x in enumerate(maxslotecap2) if x==max(maxslotecap2)]
  10.                 nbeg=0
  11.                 if (prem==0 or fin!=0):
  12.                     prem=1
  13.                     for n in maxepow:
  14.                         for p in maxecap:
  15.                             if (slotidecap[p]==slotidepow[n] and slotidepow2[n]!=0):
  16.                                 catepow2.append(maxslotepow[n])
  17.                                 catecap2.append(maxslotecap[n])
  18.                                 catid2.append(slotidepow[n])
  19.                                 maxslotepow2[n]=0
  20.                                 print (maxslotepow) #maxslotepow est modifiée alors qu'elle ne devrait pas l'être
  21.                                 maxslotepow[n]=5
  22.                                 print (maxslotepow, " ", maxslotepow2) #idem pour maxlotepow2
  23.                                 maxslotecap2[n]=0
  24.                                 slotidepow2[n]=0 #la modification des variables originales se produit aussi pour les 2 autres cas
  25.                                 nbeg+=1
  26.                                 fin=1
  27.                     if nbeg==0 :
  28.                         explo=nslot
  29.                     else :
  30.                         explo+=nbeg

Reply

Marsh Posté le 23-11-2018 à 13:20:15   

Reply

Marsh Posté le 23-11-2018 à 14:41:13    

Bonjour,
 
Tes copies lignes 4-5-6 créent un lien entre la variable maxslotepow et maxslotepow2 ?
https://stackoverflow.com/questions [...] l-variable
 
Donc change pour :
maxslotepow2=maxslotepow[:]  
maxslotecap2=maxslotecap[:]
slotidepow2=slotidepow[:]

Reply

Marsh Posté le 23-11-2018 à 16:24:26    

Top, merci de l'info, j'étais pas du tout au courant de ce fonctionnement dans python  
 
Ca ne marche toujours pas en faisant des slices, mais avec la fonction list() présentée dans ton lien, le problème est réparé, merci  [:charlest]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed