Je crée une liste de listes de listes. Lorsque je choisis un index spécifique, il définit plusieurs entrées de liste simultanément. Que se passe t-il ici?Python: Comportement d'indexation de liste étrange
x = []
for i in range(3,6+1,1):
x.append([['','']] * i)
x[0][0][0] = 1
for col in x:
print col
sortie:
[[1, ''], [1, ''], [1, '']]
[['', ''], ['', ''], ['', ''], ['', '']]
[['', ''], ['', ''], ['', ''], ['', ''], ['', '']]
[['', ''], ['', ''], ['', ''], ['', ''], ['', ''], ['', '']]
Il est encore une question ouverte de savoir pourquoi cela ne fonctionne pas ... Voici une solution, mais ...
x = []
for i in range(3,6+1,1):
y = ['','']
tmp = []
for j in range(i):
tmp.append(y[:])
x.append(tmp)
x[0][0][0] = 1
for col in x:
print col
sortie:
[[1, ''], ['', ''], ['', '']]
[['', ''], ['', ''], ['', ''], ['', '']]
[['', ''], ['', ''], ['', ''], ['', ''], ['', '']]
[['', ''], ['', ''], ['', ''], ['', ''], ['', ''], ['', '']]
Ouais ... N'est-ce pas une caractéristique assez indésirable de python? –
Si vous considérez cela comme une duplication d'une liste de pointeurs (vers des listes internes) alors je pense que cela a plus de sens ... – DNA