跳过枚举中的前两个元素 -- python

skip first two elements in an enumeration -- python

这不是我想要的枚举:

>>> seasons = ['Spring', 'summer', 'fall', 'winter']

>>> list(enumerate(seasons, start =2))

[(2, 'Spring'), (3, 'summer'), (4, 'fall'), (5, 'winter')]

这是我想要枚举的功能:

 >>> list(enumerate(seasons, start =2))
[(2, 'fall'), (3, 'winter')]

看出区别了吗? 第一个只是说,"fine I'll call your 0th element 2 if you really want me to"

第二个说,"I understand that you just want to begin the loop at the second index, much like range(2, len(seasons)) would do"

有没有办法简单地用枚举来做到这一点?

为什么不只对前两个元素进行切片?

print(list(enumerate(seasons[2:], start=2)))

输出:

[(2, 'fall'), (3, 'winter')]

了解枚举和开始的情况。尝试遍历它以查看它的输出:

for i, v in enumerate(seasons, start=2):
    print(i, v)

如您所见,您的 i 只是从 2 开始在 seasons 列表中递增。但列表中的每个值实际上都是从列表的开头开始的。这只是进一步证明 start 与列表迭代的实际起点没有任何关系。

您可以使用 itertools.islice 来获取可迭代对象的一部分:

In [9]: from itertools import islice

In [10]: list(islice(enumerate(seasons), 2, None))
Out[10]: [(2, 'fall'), (3, 'winter')]