foo = [1, 2, 3]
foo[:][0] = 5
foo
ne change pas, aussi:liste Python tranche comme copie peu profonde
import copy
foo = [1, 2, 3]
boo = copy.copy(foo)
boo[0] = 5
Encore une fois, foo[0]
reste le même.
Pourquoi? La copie superficielle crée une nouvelle liste, mais ne devrait pas boo[0]
/boo[1]
/boo[2]
pointer vers les mêmes objets que foo[0]
/foo[1]
/foo[2]
?
Vous êtes en train de réattribuer ce qui est stocké à la position 0 dans votre copie, pourquoi cela changerait-il l'original? – timgeb
Je ne pense pas que la question qui a été marquée en double est vraiment un doublon. Cette question ne demande pas comment faire une copie d'une liste, c'est demander pourquoi une copie d'une liste ne fonctionne pas comme le demandeur l'attend. – BrenBarn
connexes http://stackoverflow.com/questions/3485475/can-i-create-a-view-on-a-python-list – wim