👤

Sagot :

Bonjour

En Python, il existe plusieurs méthodes pour inverser une liste.

reverse()

Il s'agit d'une fonction basique, càd une fonction présente de base dans Python.

La spécificité de cette technique, c'est qu'elle ne crée pas de copie de ta liste mais réellement modifier l'ordre dans la liste initiale.

▌  liste = ["pomme", "poire", "pêche", "banane", "framboise"]

▌  liste.reverse()

▌  print(liste) >>> ['framboise', 'banane', 'pêche', 'poire', 'pomme']

reversed()

Il s'agit, ici aussi, d'une fonction basique de Python.

Cette option est plus souvent utilisée dans des boucles for, mais tu pourrais aussi l'utiliser pour simplement inverse ta liste (même si reverse() reste plus recommandé).

Cependant, dans ce cas-ci, cette méthode demande la création d'une nouvelle liste.

▌  liste = ["pomme", "poire", "pêche", "banane", "framboise"]

▌  liste_inversee = list(reversed(liste))*

▌  print(liste) >>> ['framboise', 'banane', 'pêche', 'poire', 'pomme']

* À noter qu'on précise bien que liste_inversee est une variable de type list(), sans quoi la valeur rendue sera tout autre (ca renverrait le type de la variable et pas une liste, bref rien d'intéressant pour nous).

Méthode de découpage Python

Il s'agit d'une méthode peut-être plus accessible mais un peu moins optimisé que le reverse().

Je vais expliquer toutes les étapes pour arriver à cette méthode juste en dessosu mais pour directement te donner ta réponse:

▌  liste = ["pomme", "poire", "pêche", "banane", "framboise"]

▌  print(liste[::-1]) >>> ['framboise', 'banane', 'pêche', 'poire', 'pomme']

En Python tu sais sûrement que pour obtenir une valeur d'une liste, on se référencie à son index.

▌  liste[2] = "pêche"

Et bien chaque élément a aussi un index négatif qui part de -1 et qui commence à compter à partir de la fin

Donc "pêche" aura aussi un index liste[-3]

- voir schéma ci-joint -

Il existe un moyen de trancher une partie d'une liste, de n'obtenir que certains éléments.

▌  liste[0:2]

Cela nous donnera seulement les éléments entre 0 et 2 (= ['pomme', 'poire']).

Et si on part de zéro, càd donc la première valeur de la liste, on a pas forcément besoin de la spécifier, Python sait que si on ne lui dit rien, il vaut mieux commencer à compter au début.

Donc on aurait le même résultat en écrivant

▌  liste[:2]

À cette idée de trancher une partie, on peut aussi imposer un pas, c'est à dire un "rythme".

  • Si on met un pas de 1, ca sera 1 valeur sur 1 (= toutes) qui sera prise
  • Si on met un pas de 3, ca sera 1 valeur sur 3 qui sera prise

Le pas s'indique en 3ieme position, comme ca:

▌  liste[:4:2]

Donc là on va prendre les valeurs entre 0 et 4, mais seulement 1 sur deux, c'est à dire ['pomme', 'pêche', 'framboise']

Après si on finit par la fin (4), ce n'est pas non-plus nécessaire de le préciser à Python...

▌  liste[::2]

Si on indique un pas négatif, c'est simplement qu'on va commencer par la fin.

▌  liste[::-2]

Donnera donc ['framboise', 'pêche', 'pomme'], c'est à dire la même chose qu'avec 2 mais dans le sens inverse puisqu'on commence par la fin.

C'est donc pour ca qu'en mettant -1, on recrée la liste en sens inverse.

Peut-être beaucoup de blabla mais mieux vaut une réponse bien complète qui t'aide à comprendre (je l'espère !).

Si tu as des questions ou des incompréhensions, tu peux me le demander dans les commentaires :)

Bonne journée !

View image CLEMENTCG

Other Questions

© 2024 IDNLearn. All rights reserved.