
En Python, vous pouvez inverser les éléments des listes (list) en utilisant reverse(), reversed() et slicing. Si vous souhaitez inverser des chaînes (str) et des tuples (tuple), utilisez reversed() ou slice.
Cet article décrit le contenu suivant.
- La méthode de type de liste reverse() inverse la liste d’origine
- La fonction intégrée reversed() renvoie un itérateur inverse
- Inverser avec tranchage
- Inverser les chaînes et les tuples
Si vous souhaitez trier par ordre croissant ou décroissant plutôt qu’en ordre inverse, consultez l’article suivant.
La méthode de type de liste reverse() inverse la liste d’origine
reverse() est une méthode de type liste.
reverse() est un processus destructeur qui inverse la liste d’origine en place.
org_list = [1, 2, 3, 4, 5]
org_list.reverse()
print(org_list)
# [5, 4, 3, 2, 1]
Notez que reverse() renvoie None.
print(org_list.reverse())
# None
La fonction intégrée reversed() renvoie un itérateur inverse
reversed() est une fonction intégrée.
La fonction intégrée reversed() génère un itérateur qui récupère les éléments dans l’ordre inverse.
reversed() renvoie un itérateur qui récupère les éléments dans l’ordre inverse. La liste originale reste inchangée.
org_list = [1, 2, 3, 4, 5]
reverse_iterator = reversed(org_list)
print(org_list)
# [1, 2, 3, 4, 5]
print(type(reverse_iterator))
# <class 'list_reverseiterator'>
Notez que reversed() renvoie un itérateur, pas une liste.
Vous pouvez simplement l’utiliser dans une boucle for.
for i in reversed(org_list):
print(i)
# 5
# 4
# 3
# 2
# 1
Si vous souhaitez obtenir une liste dans l’ordre inverse, utilisez list() pour convertir l’itérateur en liste.
new_list = list(reversed(org_list))
print(org_list)
print(new_list)
# [1, 2, 3, 4, 5]
# [5, 4, 3, 2, 1]
Inverser avec tranchage
Vous pouvez également utiliser un découpage pour inverser les listes.
Dans le découpage en tranches, spécifiez une plage ou un incrément sous la forme [début : arrêt : fin].
Si start et stop sont omis, toute la liste est sélectionnée, et en réglant step sur -1, les éléments peuvent être obtenus un par un depuis l’arrière.
Vous pouvez obtenir la liste inversée par [::-1].
org_list = [1, 2, 3, 4, 5]
new_list = org_list[::-1]
print(org_list)
print(new_list)
# [1, 2, 3, 4, 5]
# [5, 4, 3, 2, 1]
Consultez l’article suivant pour plus de détails sur le découpage.
Inverser les chaînes et les tuples
Étant donné que les chaînes et les tuples sont immuables, il n’y a pas de méthode reverse() qui met à jour l’objet d’origine.
Si vous souhaitez inverser des chaînes ou des tuples, utilisez reversed() ou slices.
Cordes inversées
Étant donné que les itérateurs ne peuvent pas être convertis directement en chaînes, lors de l’utilisation de reversed(), convertissez l’itérateur en une liste contenant un caractère, puis joignez-les avec join().
org_str = 'abcde'
new_str_list = list(reversed(org_str))
print(new_str_list)
# ['e', 'd', 'c', 'b', 'a']
new_str = ''.join(list(reversed(org_str)))
print(new_str)
# edcba
La méthode utilisant le découpage est la même que pour les listes. C’est plus facile que d’utiliser reversed().
new_str = org_str[::-1]
print(new_str)
# edcba
Tuples inversés
Utilisez tuple() pour convertir un itérateur en tuple.
org_tuple = (1, 2, 3, 4, 5)
new_tuple = tuple(reversed(org_tuple))
print(new_tuple)
# (5, 4, 3, 2, 1)
La méthode utilisant le découpage est la même que pour les listes.
new_tuple = org_tuple[::-1]
print(new_tuple)
# (5, 4, 3, 2, 1)