Python:枚举的片段

Fel*_*lix 4 python list slice

我想在一个列表中迭代.另外,我想知道迭代下元素的索引.

我想做点什么

for i, elm in enumerate(test_list)[7:40]:
    print i, elm
    #i must start with 7
Run Code Online (Sandbox Code Playgroud)

唉,它说,那 'enumerate' object has no attribute '__getitem__'

我怎样才能以大多数pythonic的方式获得它?

pok*_*oke 9

enumerate返回一个迭代器,它不支持基于索引的访问.但是,您可以先对原始列表进行切片,然后从不同的索引开始enumerate:

for i, elm in enumerate(test_list[7:40], 7):
    print i, elm
Run Code Online (Sandbox Code Playgroud)


roi*_*ppi 9

你可以使用islice:

from itertools import islice

for i,elm in islice(enumerate(some_list),7,40):
    print i,elm
Run Code Online (Sandbox Code Playgroud)

  • 但是,它确实消耗了列表的第一个元素,因此,如果从索引100开始,它将首先迭代100个以上的元素。切片列表将只是“跳转”在那里。 (2认同)
  • @wnnmaw很难回答,在某些情况下都更快.几乎从来没有接近性能瓶颈,所以真正选择一个性能特征是过早优化. (2认同)