假设我有这个清单:
thelist = ['apple','orange','banana','grapes']
for fruit in thelist:
这将贯穿所有成果。
然而,如果我想从橙色开始怎么办?而不是从苹果开始? 当然,我可以做“如果......继续”,但必须有更好的方法吗?
答案 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
>>>