Solution
Oui, vous pouvez:
l = L[1::2]
Et c'est tout. Le résultat contiendra les éléments placés sur les positions suivantes ( 0
-basées, donc le premier élément est à la position 0
, le second à 1
etc.):
1, 3, 5
donc le résultat (nombres réels) sera:
2, 4, 6
Explication
Le [1::2]
à la fin est juste une notation pour le découpage de liste. Il se présente généralement sous la forme suivante:
some_list[start:stop:step]
Si nous omettons start
, la valeur par défaut ( 0
) serait utilisée. Donc le premier élément (en position 0
, car les index sont0
basés sur) serait sélectionné. Dans ce cas, le deuxième élément sera sélectionné.
Étant donné que le deuxième élément est omis, la valeur par défaut est utilisée (la fin de la liste). La liste est donc itérée du deuxième élément à la fin .
Nous avons également fourni un troisième argument ( step
) qui est2
. Ce qui signifie qu'un élément sera sélectionné, le suivant sera ignoré, et ainsi de suite ...
Donc, pour résumer, dans ce cas [1::2]
signifie:
- prenez le deuxième élément (qui, au fait, est un élément étrange, si vous en jugez à partir de l'index),
- sauter un élément (parce que nous en avons
step=2
, donc nous en sautons un, contrairement à step=1
ce qui est par défaut),
- prenez l'élément suivant,
- Répétez les étapes 2 à 3. jusqu'à ce que la fin de la liste soit atteinte,
EDIT : @PreetKukreti a donné un lien pour une autre explication sur la notation de découpage de liste de Python. Voir ici: expliquer la notation de tranche de Python
Extras - remplacement du compteur par enumerate()
Dans votre code, vous créez et augmentez explicitement le compteur. En Python, ce n'est pas nécessaire, car vous pouvez énumérer à travers certains itérables en utilisant enumerate()
:
for count, i in enumerate(L):
if count % 2 == 1:
l.append(i)
Ce qui précède sert exactement le même objectif que le code que vous utilisiez:
count = 0
for i in L:
if count % 2 == 1:
l.append(i)
count += 1
En savoir plus sur l'émulation de for
boucles avec compteur en Python: Accéder à l'index en Python pour les boucles 'for'