Python Language Itérer différentes parties d'une liste avec différentes tailles de pas


Exemple

Supposons que vous ayez une longue liste d'éléments et que vous ne soyez intéressé que par tous les autres éléments de la liste. Vous souhaitez peut-être examiner uniquement le premier ou le dernier élément, ou une plage spécifique d'entrées dans votre liste. Python possède de puissantes fonctionnalités intégrées d'indexation. Voici quelques exemples de réalisation de ces scénarios.

Voici une liste simple qui sera utilisée dans tous les exemples:

lst = ['alpha', 'bravo', 'charlie', 'delta', 'echo']

Itération sur toute la liste

Pour parcourir chaque élément de la liste, une boucle for comme ci-dessous peut être utilisée:

for s in lst:
    print s[:1] # print the first letter

La boucle for assigne des s à chaque élément de lst . Cela va imprimer:

a
b
c
d
e

Vous avez souvent besoin à la fois de l'élément et de l'index de cet élément. Le mot clé enumerate exécute cette tâche.

for idx, s in enumerate(lst):
    print("%s has an index of %d" % (s, idx))

L'index idx commencera par zéro et par incrément pour chaque itération, tandis que le s contiendra l'élément en cours de traitement. L'extrait de code précédent affichera:

alpha has an index of 0
bravo has an index of 1
charlie has an index of 2
delta has an index of 3
echo has an index of 4

Itérer sur la sous-liste

Si vous souhaitez effectuer une itération sur une plage (en vous rappelant que Python utilise l'indexation basée sur zéro), utilisez le mot clé range .

for i in range(2,4):
    print("lst at %d contains %s" % (i, lst[i]))

Cela produirait:

lst at 2 contains charlie
lst at 3 contains delta

La liste peut également être tranchée. La notation de tranche suivante va d'un élément à l'index 1 à la fin avec un pas de 2. Les deux for boucles donnent le même résultat.

for s in lst[1::2]:
    print(s)

for i in range(1, len(lst), 2):
    print(lst[i])

Les extraits de code ci-dessus:

bravo
delta

L'indexation et le découpage sont un sujet à part.