3 Réponses :


2
votes

A est une référence à une liste mutable. Donc, lorsque vous dites: xxx

Vous appelez __ settitem __ sur la liste qui définit un élément de la liste . Liste .__ Settitem __ Ne tente pas de muter l'élément utilisé pour être stocké dans le deuxième index. Il remplace simplement cette référence avec une nouvelle.

de l'autre côté, x = a [2] appels __ getItem __ qui crée une nouvelle référence à l'objet stocké à cet indice dans la liste.


0 commentaires

1
votes
>>> a = [1000,2000, [2] , 4000]
>>> b = [-1, a, -100, a[2], -1]
>>> a[2] += [5]     # we can modify [2] from from either a[2] or b[-2]
>>> b[-2]+= [10]    # `+=` , `list.extend`, `list.append` changes the list in-place
>>> a[2] is b[-2]   #both still points to the same object as lists are mutable
True
>>> a
[1000, 2000, [2, 5, 10], 4000]
>>> b
[-1, [1000, 2000, [2, 5, 10], 4000], -100, [2, 5, 10], -1]

0 commentaires

0
votes

Pour résoudre le problème de l'accès aux sublistes par index de la liste extérieure, vous pouvez utiliser quelque chose comme: xxx

pour le comportement exact que vous demandez, ajoutez ce qui suit: xxx

note, cela va probablement casser si vous essayez d'utiliser des tranches.


0 commentaires