Say I've got a list and I want to itera开发者_开发问答te over the first n
of them. What's the best way to write this in Python?
The normal way would be slicing:
for item in your_list[:n]:
...
I'd probably use itertools.islice
(<- follow the link for the docs), which has the benefits of:
- working with any iterable object
- not copying the list
Usage:
import itertools
n = 2
mylist = [1, 2, 3, 4]
for item in itertools.islice(mylist, n):
print(item)
outputs:
1
2
One downside is that if you wanted a non-zero start, it has to iterate up to that point one by one: https://stackoverflow.com/a/5131550/895245
Tested in Python 3.8.6.
You can just slice the list:
>>> l = [1, 2, 3, 4, 5]
>>> n = 3
>>> l[:n]
[1, 2, 3]
and then iterate on the slice as with any iterable.
Python lists are O(1) random access, so just:
for i in xrange(n):
print list[i]
精彩评论