从列表中提取每个第n个项目

时间:2018-01-20 22:59:06

标签: python

从列表中提取每个第n项的最有效方法是什么。如果我有:

[1,2,3,4,5,6,7,8,9,10,...]

我希望从第一个索引开始每个第3项:

[1,2,7,8,13,14,...]

3 个答案:

答案 0 :(得分:3)

您可以使用%运算符:

[val for i, val in enumerate(lst) if i % 6 < 2]

通常,如果要提取每个 n th m 值,则:

[val for i, val in enumerate(lst) if i % (n*m) < m]

答案 1 :(得分:0)

您可以使用itertools.groupby

import itertools
s = [1,2,3,4,5,6,7,8,9,10]
new_s = [(a, list(b)) for a, b in itertools.groupby(zip(s, range(len(s))), key=lambda x:x[-1]%6 == 0 or (x[-1]-1)%6 == 0)]
final_data = list(itertools.chain(*[map(lambda x:x[0], b) for a, b in new_s if a]))

输出:

[1, 2, 7, 8]

答案 2 :(得分:0)

尝试这样的事情:

data=[1,2,3,4,5,6,7,8,9,10,11,12,13,14]

for i in range(0,len(data),6):
    print(data[i:i+2])

输出:

[1, 2]
[7, 8]
[13, 14]