如何从列表的某个索引(Python)开始为每个人做一个“for each”?

时间:2009-11-19 11:09:59

标签: python list

假设我有这个清单:

thelist = ['apple','orange','banana','grapes']
for fruit in thelist:

这将贯穿所有成果。

然而,如果我想从橙色开始怎么办?而不是从苹果开始? 当然,我可以做“如果......继续”,但必须有更好的方法吗?

6 个答案:

答案 0 :(得分:14)

for fruit in thelist[1:]:
    ...

这当然假设您知道要从哪个索引开始。但你可以轻松找到索引:

for fruit in thelist[thelist.index('orange'):]:
    ...

答案 1 :(得分:11)

使用python的优雅slices

>>> for fruit in thelist[1:]:
>>>    print fruit

答案 2 :(得分: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

答案 3 :(得分:2)

for fruit in thelist [1:]:

将从列表中的第二个元素开始。

答案 4 :(得分:1)

for fruit in thelist[1:]:
    print fruit

答案 5 :(得分:0)

切片会复制列表,因此如果有多个项,或者如果您不想单独搜索列表中的起始索引,则迭代器会让您搜索,然后继续从那里:

>>> thelist = ['apple','orange','banana','grapes']
>>> fruit_iter = iter(thelist)
>>> target_value = 'orange'
>>> while fruit_iter.next() != target_value: pass
...
>>> # at this point, fruit_iter points to the entry after target_value
>>> print ','.join(fruit_iter)
banana,grapes
>>>