跳过枚举中的前两个元素 -- 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')]
这不是我想要的枚举:
>>> 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')]