如何从列表的某个索引开始执行 "for each" (Python)?

1 投票
6 回答
516 浏览
提问于 2025-04-15 16:10

假设我有这样一个水果列表:

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

撰写回答