从列表中提取每个第n项的最有效方法是什么。如果我有:
[1,2,3,4,5,6,7,8,9,10,...]
我希望从第一个索引开始每个第3项:
[1,2,7,8,13,14,...]
答案 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]