Python - 以非正统方式迭代数组

时间:2015-12-07 02:30:36

标签: python arrays controls

我有一个非常奇怪的问题,到目前为止我还没有找到答案我在python中有一个数组:

array = [1, 2, 3, 4, 5, 6, 7, 8]

当迭代这个时我想拉2个元素并跳过2, 结果将是:

result = [1, 2, 5, 6]

怎么可以这样做?如果不做一个可怕的hackjob,我想不出一个好方法。

2 个答案:

答案 0 :(得分:5)

这个怎么样:

>>> from itertools import compress, cycle
>>> array = [1, 2, 3, 4, 5, 6, 7, 8]
>>> list(compress(array, cycle([1,1,0,0])))
[1, 2, 5, 6]

答案 1 :(得分:3)

使用自定义生成器应该不会太难:

def every2(iterable):
    iterable = iter(iterable)
    for item in iterable:
        # Yield the current item and the next item while advancing the generator
        yield item
        yield next(iterable)

        # Skip the next two elements.
        next(iterable)
        next(iterable)