这不是我想要的枚举:
>>> 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(季节))会做”
使用枚举是否无法做到这一点?
答案 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')]