如何从列表的某个索引开始执行 "for each" (Python)?
假设我有这样一个水果列表:
thelist = ['apple','orange','banana','grapes']
for fruit in thelist:
这个代码会遍历所有的水果。
但是,如果我想从橙子开始,而不是从苹果开始呢?当然,我可以用“如果...继续”的方式来处理,但总得有更好的办法吧?
6 个回答
3
正如Paul McGuire提到的,切片一个列表会在内存中创建一个结果的副本。如果你的列表有500,000个元素,那么执行l[2:]
就会创建一个新的包含499,998个元素的列表。
为了避免这种情况,可以使用itertools.islice
:
>>> thelist = ['a', 'b', 'c']
>>> import itertools
>>> for i in itertools.islice(thelist, 1, None):
... print i
...
b
c
14
for fruit in thelist[1:]:
...
这当然是指你知道从哪个位置开始。但其实你可以很简单地找到这个位置:
for fruit in thelist[thelist.index('orange'):]:
...
11
使用Python优雅的切片
>>> for fruit in thelist[1:]:
>>> print fruit