我有一个非常奇怪的问题,到目前为止我还没有找到答案我在python中有一个数组:
array = [1, 2, 3, 4, 5, 6, 7, 8]
当迭代这个时我想拉2个元素并跳过2, 结果将是:
result = [1, 2, 5, 6]
怎么可以这样做?如果不做一个可怕的hackjob,我想不出一个好方法。
答案 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)