Python:遍历列表范围而不重复

时间:2018-10-09 13:14:43

标签: python list indexing iterator

假设我有列表list_1,并且我想遍历其元素,从索引i(j - 1),其中j > i

据我所知,我的选择是:

选项1:构建一个全新的列表

for element in list_1[i:j]:
    # do something

选项2:遍历索引本身

for index in range(i, j):
    element = list_1[index]
    # do something

两个选项都不可取。第一种选择是不理想的,因为它涉及构建新列表。第二个选项在可读性方面尤其不理想,因为它的迭代遍历索引,而不是遍历列表元素。

是否有内置的生成器函数可在给定范围内的元素上进行迭代?

1 个答案:

答案 0 :(得分:4)

您可以使用itertools.islice()通过索引遍历值的子集:

from itertools import islice

for element in islice(list_1, i, j):

这仍将遍历i - 1的所有list_1初始值,但将在C中进行,并且不会在内存中保留跳过的值。

演示:

>>> from itertools import islice
>>> list_1 = [42, 81, 117, 3103, 17, 22]
>>> for elem in islice(list_1, 2, 5):
...     print(elem)
...
117
3103
17