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

时间:2016-04-07 14:24:34

标签: python enumerate

这不是我想要的枚举:

>>> 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')]

看到区别? 第一个只是说,“如果你真的想要我的话,我会把你的第0个元素称为”

第二个说:“我明白你只想在第二个指数开始循环,就像范围(2,len(季节))会做”

使用枚举是否无法做到这一点?

2 个答案:

答案 0 :(得分:3)

为什么不切片前两个元素?

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

输出:

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

了解枚举和开始时的情况。尝试迭代它以查看它输出的内容:

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

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

答案 1 :(得分:2)

您可以使用itertools.islice来获取可迭代的片段:

In [9]: from itertools import islice

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