繁体   English   中英

检查列表中的特定连续值

[英]Check for specific consecutive value in list

假设我有一个包含以下值的列表:

l = [1,2,3,4,5,6,15,18,20,21,22,28]

现在如何在阈值 4 处检查连续值的循环,这样如果出现 4 个连续值,它会跳过所有这些并继续第 5 个值。 它的输出将类似于:

ans = [1,5,15,18,20,28]

首先,您必须找到连续值的组。 可能有更优雅的方法,但您可以例如使用简单的for循环并与前一组中的最后一个元素(如果有)进行比较:

grps = []
for i, x in enumerate(l):
    if i == 0 or x > grps[-1][-1] + 1:
        grps.append([x])
    else:
        grps[-1].append(x)
# [[1, 2, 3, 4, 5, 6], [15], [18], [20, 21, 22], [28]]

然后,从每组中取出第四个元素:

res = [x for g in grps for x in g[::4]]
# [1, 5, 15, 18, 20, 28]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM