Lorsque vous spécifiez a
sur le côté gauche de l'écran =
vous utilisez l'opérateur Python affectation normale qui modifie le nom a
dans le contexte actuel pour pointer vers la nouvelle valeur. Cela ne modifie pas la valeur précédente à laquelle a
pointait du doigt.
En spécifiant a[0:2]
sur le côté gauche de l'écran =
vous indiquez à Python que vous voulez utiliser l'opérateur affectation des tranches . L'affectation de tranches est une syntaxe spéciale pour les listes, qui permet d'insérer, de supprimer ou de 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. séquence attribuée, ce qui modifie la longueur de la séquence cible, si le la séquence cible le permet. - source
L'affectation des tranches offre une fonction similaire à celle de l'affectation des déballage de tuple . Par exemple, a[0:1] = [4, 5]
est équivalent à :
# Tuple Unpacking
a[0], a[1] = [4, 5]
Le déballage de tuple permet de 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 il n'est pas possible d'insérer ou de supprimer des éléments.
Avant et après toutes ces opérations, a
est exactement la même liste. Python fournit simplement un sucre syntaxique agréable pour modifier une liste sur place.