Utilisation du slicing pour l'inversion
Dans cette étape, vous allez vous concentrer spécifiquement sur la manière dont le slicing (tranchage) est utilisé pour inverser une liste en Python. Le slicing est une fonctionnalité puissante qui vous permet d'extraire des parties d'une liste, et il peut également être utilisé pour créer une copie inversée de la liste.
Revoyons le fichier palindrome.py
et examinons plus en détail la technique de slicing.
-
Ouvrez le fichier palindrome.py
dans votre éditeur VS Code.
-
Assurez-vous que le contenu du fichier palindrome.py
est le suivant :
def is_palindrome(lst):
reversed_lst = lst[::-1]
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
La partie clé de ce code est lst[::-1]
. Il s'agit d'une opération de slicing qui crée une copie inversée de la liste. Décortiquons-la :
lst[:]
créerait une copie de l'ensemble de la liste.
lst[start:end]
créerait une tranche de l'index start
à end - 1
.
lst[start:end:step]
vous permet de spécifier un step
(pas). Un pas de -1
signifie d'itérer en arrière dans la liste.
- En omettant
start
et end
et en utilisant un pas de -1
(c'est-à-dire lst[::-1]
), vous créez une copie inversée de l'ensemble de la liste.
Pour illustrer cela plus en détail, ajoutons quelques instructions d'impression pour voir l'effet du slicing :
def is_palindrome(lst):
reversed_lst = lst[::-1]
print(f"Original list: {lst}")
print(f"Reversed list: {reversed_lst}")
return lst == reversed_lst
## Example lists
list1 = [1, 2, 3, 2, 1]
list2 = [1, 2, 3, 4, 5]
## Check if the lists are palindromes
print(f"{list1} is a palindrome: {is_palindrome(list1)}")
print(f"{list2} is a palindrome: {is_palindrome(list2)}")
Maintenant, exécutez le script à nouveau :
python ~/project/palindrome.py
Vous verrez les listes originales et inversées affichées avant le résultat de la vérification du palindrome :
Original list: [1, 2, 3, 2, 1]
Reversed list: [1, 2, 3, 2, 1]
[1, 2, 3, 2, 1] is a palindrome: True
Original list: [1, 2, 3, 4, 5]
Reversed list: [5, 4, 3, 2, 1]
[1, 2, 3, 4, 5] is a palindrome: False
Cela démontre comment le slicing avec [::-1]
inverse efficacement la liste, qui est ensuite utilisée pour déterminer si la liste originale est un palindrome.