Lorsque vous spécifiez a
sur le côté gauche de l' =
opérateur, vous utilisez l' affectation normale de Python , qui modifie le nom a
dans le contexte actuel pour pointer vers la nouvelle valeur. Cela ne change pas la valeur précédente vers laquelle a
pointait.
En spécifiant a[0:2]
sur le côté gauche de l' =
opérateur, vous indiquez à Python que vous souhaitez utiliser l' affectation de tranche . L'affectation de tranche est une syntaxe spéciale pour les listes, dans laquelle vous pouvez insérer, supprimer ou remplacer le contenu d'une liste:
Insertion :
>>> a = [1, 2, 3]
>>> a[0:0] = [-3, -2, -1, 0]
>>> a
[-3, -2, -1, 0, 1, 2, 3]
Suppression :
>>> a
[-3, -2, -1, 0, 1, 2, 3]
>>> a[2:4] = []
>>> a
[-3, -2, 1, 2, 3]
Remplacement :
>>> a
[-3, -2, 1, 2, 3]
>>> a[:] = [1, 2, 3]
>>> a
[1, 2, 3]
Remarque:
La longueur de la tranche peut être différente de la longueur de la séquence attribuée, modifiant ainsi la longueur de la séquence cible, si la séquence cible le permet. - source
L'affectation de tranche fournit une fonction similaire à la décompression de tuples . Par exemple,a[0:1] = [4, 5]
équivaut à:
# Tuple Unpacking
a[0], a[1] = [4, 5]
Avec Tuple Unpacking, vous pouvez modifier des listes non séquentielles:
>>> a
[4, 5, 3]
>>> a[-1], a[0] = [7, 3]
>>> a
[3, 5, 7]
Cependant, le déballage de tuple est limité au remplacement, car vous ne pouvez pas insérer ou supprimer des éléments.
Avant et après toutes ces opérations, a
c'est la même liste exacte. Python fournit simplement un bon sucre syntaxique pour modifier une liste sur place.