HOWTO · Python
Ce que signifie `[:-1]` en Python
Découvrez comment la tranche `[:-1]` de Python renvoie une séquence sans son dernier élément.
Sur cette page
En Python, sequence[:-1] renvoie une nouvelle séquence contenant chaque élément sauf le dernier. Elle fonctionne avec les chaînes et les listes, et laisse la séquence d’origine inchangée. L’expression combine le slicing avec -1, qui identifie la position finale lors d’une indexation à partir de la fin.
Le slicing en Python
Python propose deux façons équivalentes de décrire un slice : le constructeur slice() et la syntaxe d’indexation. La forme générale est sequence[start:stop:step] ; chaque partie sélectionne où commencer, où s’arrêter et de combien avancer. Les bornes start et stop identifient des positions, tandis que step contrôle la direction et l’espacement.
La position de stop est exclue. Un slice se terminant à l’index 4 inclut les positions avant 4, de sorte que sequence[1:4] sélectionne les index 1, 2 et 3. Les index peuvent compter à partir de la fin : -1 désigne l’élément final, -2 celui qui le précède. Une borne omise diffère de l’écriture explicite de -1 : avec le pas positif habituel, un début omis commence au début de la séquence et un stop omis continue jusqu’à sa fin. Les valeurs par défaut dépendent de la direction du pas. Avec un pas négatif, le parcours se déplace de droite à gauche ; un début omis commence à la position finale, tandis qu’un stop omis continue au-delà de la première position. Ce comportement dépendant de la direction est la raison pour laquelle un stop omis n’est pas la même chose que l’écriture explicite de -1.
Le constructeur prend les mêmes parties : slice(start, stop, step). Contrairement à la syntaxe d’indexation, vous ne pouvez pas laisser un argument du constructeur vide ; représentez une borne omise avec None. Par exemple, slice(None, 5) utilise un début omis et un stop de 5, équivalent à sequence[:5] pour un pas positif. Avec un seul argument, slice(5) définit le stop à 5 ; cela ne signifie pas « commencer à l’index 5 ». Ces formes sont utiles lorsque le slice doit être stocké ou transmis comme une valeur.
Ce que signifie [:-1] en Python
Dans sequence[:-1], le début est omis, donc le slice commence au début. Le stop est -1, qui identifie le dernier élément, et comme le stop est exclu, cet élément n’est pas copié dans le résultat. Par exemple, l’appliquer à "Python" donne "Pytho" ; l’appliquer à ["red", "green", "blue"] donne ["red", "green"].
La même expression peut être appliquée à différents types de séquences avec le même modèle de résultat. Cet exemple autonome utilise une courte chaîne et une liste de noms de couleurs, puis affiche chaque valeur découpée sur sa propre ligne. Les valeurs d’entrée permettent de voir facilement quel élément final est omis, tandis que les valeurs imprimées montrent que les données sources restent disponibles pour une utilisation ultérieure dans le programme.
word = "Python"
colors = ["red", "green", "blue"]
print(word[:-1])
print(colors[:-1])
Pytho
['red', 'green']
Le slicing crée un résultat au lieu de modifier la séquence source. Cela rend [:-1] utile lorsque vous avez besoin d’une version sans le dernier caractère ou élément, mais que vous avez encore besoin de la valeur d’origine plus tard. Il fonctionne également sur une séquence vide, en renvoyant une autre séquence vide. Pour une séquence à un seul élément, le résultat est vide car son seul élément est le dernier. La même règle de borne de stop explique les deux résultats.