Comment puis-je limiter le nombre d'itérations d'une boucle en Python?

Dire que j'ai une liste d'éléments, et je veux effectuer une itération sur les premiers de celui-ci:

items = list(range(10)) # I mean this to represent any kind of iterable.
limit = 5

Implémentation naïve

Le Python naïf venant d'autres langues serait probablement écrire parfaitement fonctionnel et performant (si unidiomatic) code:

index = 0
for item in items: # Python's `for` loop is a for-each.
    print(item)    # or whatever function of that item.
    index += 1
    if index == limit:
        break

Plus idiomatique de la mise en œuvre

Mais Python a énumérer, qui regroupe environ la moitié de ce code bien:

for index, item in enumerate(items):
    print(item)
    if index == limit: # There's gotta be a better way.
        break

Nous avons donc réduire le code supplémentaire dans la moitié. Mais il doit bien y avoir une meilleure façon.

Peut-on rapprocher le pseudo-code ci-dessous comportement?

Si énumérer pris une autre option stop argument (par exemple, il faut un start argument comme ceci: enumerate(items, start=1)) qui, je pense, être idéal, mais le ci-dessous n'existe pas (voir la documentation sur les énumérer ici):

# hypothetical code, not implemented:
for _, item in enumerate(items, start=0, stop=limit): # `stop` not implemented
    print(item)

Noter qu'il n'y aurait pas besoin de nom de la index car il n'est pas besoin de faire référence à elle.

Est-il un idiomatiques façon d'écrire ci-dessus? Comment?

Une question secondaire: pourquoi n'est-ce pas construit en énumérer?

InformationsquelleAutor Aaron Hall | 2016-03-19