你能否一遍又一遍地遍历列表(使用其中有一个步骤的范围)直到列表中的所有元素都被循环访问?
我有以下列表:
result = []
list = ['ba', 'cb', 'dc', 'ed', 'gf', 'jh']
我希望结果(结果)是:
result = ['dc', 'cb', 'ba', 'jh', 'gf', 'ed']
我如何让它循环遍历第一个列表,并将每个元素附加到结果列表,从第三个元素开始并使用 5 作为一个步骤,直到所有元素都在结果列表中?
请您参考如下方法:
不需要多次循环一个列表。作为一种更pythonic的方式你可以使用itertools.cycle和 islice :
>>> from itertools import cycle,islice
>>> li= ['ba', 'cb', 'dc', 'ed', 'gf', 'jh']
>>> sl=islice(cycle(li),2,None,4)
>>> [next(sl) for _ in range(len(li))]
['dc', 'ba', 'gf', 'dc', 'ba', 'gf']
请注意,在您的预期输出中,步骤是 5 而不是 4。因此,如果您使用 5 作为切片步骤,您将获得预期的输出:
>>> sl=islice(cycle(li),2,None,5)
>>> [next(sl) for _ in range(len(li))]
['dc', 'cb', 'ba', 'jh', 'gf', 'ed']
