Bonjour!!

j'ai un comportement bizarre avec mes listes (bizarre = que je ne comprends pas..).
Je créer une liste, je modifie ses valeurs cycliquement, et tout va bien.
A côté de ça je stoque les valeurs du premier élément de ma liste avant le changement, pour une utilisation ultérieure. Tout va toujours très bien.
Puis à un moment je fais un "insert" dans ma liste (et incrémente "int_Taille").
Et là c'est le drame:
Je stoque toujours mon premier élément, mais après modification des valeurs de ma liste, mon élément stoqué à aussi changé!!

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
 
#l'init de la liste
self.tab_Positions = self.int_Taille.get()*[0]
for i in range(self.int_Taille.get()):
    self.tab_Positions[i] = Coordonnees(self)
 
#le changement des valeurs
self.pos_Queue.int_PosX.set(self.tab_Positions[0].int_PosX.get())
self.pos_Queue.int_PosY.set(self.tab_Positions[0].int_PosY.get()) 
 
## ici "pos_Queue" est bon
 
for i in range(self.int_Taille.get()-1):
    self.tab_Positions[i].int_PosX.set(self.tab_Positions[i+1].int_PosX.get())
    self.tab_Positions[i].int_PosY.set(self.tab_Positions[i+1].int_PosY.get())
#je vous épargne le nouveau self.tab_Positions[self.int_Taille.get()] parceque c'est un peu long et que mon probkème n'est pas là
 
## ici "pos_Queue" a changé et a pris la nouvelle valeur de "self.tab_Positions[0]" !!
 
#mon type "coordonnées"
class Coordonnees:
        def __init__(self, parent):
                self.parent = parent
 
                #Structure
                self.int_PosX = Tkinter.IntVar()                 
                self.int_PosY = Tkinter.IntVar()
J'ai essayé plusieurs variantes, en utilisant des variables intermédiaires lors de la réactualisation de ma liste et de mon élément sauvegardé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
ix = self.tab_Positions[i+1].int_PosY.get()
iy = self.tab_Positions[i+1].int_PosX.get()
self.tab_Positions[i].int_PosY.set(ix)                
self.tab_Positions[i].int_PosX.set(iy)
J'ai essayé de changer mon initialisation:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
self.tab_Positions = []
for i in range(self.int_Taille.get()):
    self.tab_Positions.append(Coordonnees(self))
Mais rien n'a changé.
Du coup je me disais que peut être ma liste non-contrainte n'était peut être pas si non-contrainte que ça et que de l'avoir agrandit j'avais la zone réservée en mémoire pour ma liste qui recouvrait celle de mon élément sauvegardé.
C'est pas très convaiquant, mais j'ai pas mieux.

Quelqu'un verrait une grosse (ou petite) boulette dans mon code?
Ou a défaut, quelqu'un aurait-il une expliquation?
Ou encore, quelqu'un pourrait-il m'expliquer comment Python gère ses listes dynamiquement en mémoire pour que j'essaye de comprendre ce qui peut bien m'arriver.