30 votes

python : itérer une plage spécifique dans une liste

Disons que j'ai une liste :

listOfStuff =([a,b], [c,d], [e,f], [f,g])

Ce que je veux faire est d'itérer à travers les 2 composants du milieu d'une manière similaire au code suivant :

for item in listOfStuff(range(2,3))
   print item

Le résultat final devrait être le suivant :

[c,d]
[e,f]

Ce code ne fonctionne pas actuellement, mais j'espère que vous pouvez comprendre ce que j'essaie de faire.

48voto

eumiro Points 56644
listOfStuff =([a,b], [c,d], [e,f], [f,g])

for item in listOfStuff[1:3]:
    print item

Vous devez itérer sur une tranche de votre tuple. Le site 1 est le premier élément dont vous avez besoin et 3 (en fait 2+1) est le premier élément dont vous n'avez pas besoin.

Les éléments d'une liste sont numérotés à partir de 0 :

listOfStuff =([a,b], [c,d], [e,f], [f,g])
               0      1      2      3

[1:3] prend les éléments 1 et 2.

9voto

martineau Points 21665

Une manière plus efficace en termes de mémoire d'itérer sur une tranche d'une liste serait d'utiliser islice() de la itertools module :

from itertools import islice

listOfStuff = (['a','b'], ['c','d'], ['e','f'], ['g','h'])

for item in islice(listOfStuff, 1, 3):
    print(item)

# ['c', 'd']
# ['e', 'f']

Toutefois, cette méthode peut s'avérer relativement inefficace en termes de performances si la valeur de départ de la plage est une grande valeur puisque islice devrait itérer sur les premiers éléments de la valeur de départ-1 avant de retourner les éléments.

4voto

Håvard Points 5534

Vous voulez utiliser le tranchage.

for item in listOfStuff[1:3]:
    print item

3voto

Elior Malul Points 193

En utilisant iter builtin :

l = [1, 2, 3]
# i is the first item.
i = iter(l)
next(i)
for d in i:
    print(d)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X