python: itérer une plage spécifique dans une liste
Permet de dire que j'ai une liste:
listOfStuff =([a,b], [c,d], [e,f], [f,g])
Ce que je veux faire est de parcourir au moyen de 2 composants d'une manière similaire au code suivant:
for item in listOfStuff(range(2,3))
print item
Le résultat final devrait être:
[c,d]
[e,f]
Ce code ne fonctionne pas, mais j'espère que vous pouvez comprendre ce que je suis en train de faire.
Vous devez vous connecter pour publier un commentaire.
Vous devez effectuer une itération sur une tranche de votre tuple. Le
1
est le premier élément dont vous avez besoin et3
(2+1) est le premier élément que vous n'avez pas besoin.Des éléments dans une liste sont représentés par des chiffres de 0:
[1:3]
prend éléments 1 et 2.listOfStuff[1:len(listOfStuff)- 1]
ou tout simplementlistOfStuff[1: -1]
. BTW, faites-vous nous expliquer quelle a été votre principale raison de l'utilisationrange
dans votre question? MercilistOfStuff[1:-1]
ignore le dernier élément. @ccwhite1: utilisationlistOfStuff[1:]
listOfStuff[1:len(listOfStuff)- 1]
etlistOfStuff[1: -1]
permettra à la fois de donner les mêmes éléments (en ignorant les premières et les dernières, que ce ccwhite1 juste demandé à mon humble avis). MerciUne mémoire plus efficace pour effectuer une itération sur une tranche de liste serait d'utiliser
islice()
de laitertools
module:Cependant, cela peut être relativement inefficace en termes de performance si la valeur de départ de la gamme est d'une grande valeur, car
islice
aurait pour effectuer une itération sur la première valeur de départ-1 les articles avant de retourner les articles.islice(list1, 100000, 100100)
sera premier parcourir le premier à 99 999 valeurs (juste l'habitude de les retourner). Essayez-le vous-même avec cProfile; il est aussi dans les docs.Vous souhaitez utiliser le tranchage.
En utilisant
iter
builtin: