如果我有这样的清单:
infs = [0, 19, 20, 21, 24]
我想删除连续的值,但只保留此组中的第一个值,因此我希望得到一个结果:
infs = [0, 19, 24]
我的尝试:

 for k,(i,j) in enumerate(zip(infs, infs[1:])):
        print(k,i,j)
        if j-i == 1:
            del infs[k+1]

它离开'21'是因为它被删除了,所以在循环中删除它是个坏主意。

最佳答案

您可以通过将列表与其自身压缩,但使用其第一个项的填充来对列表中的相邻项进行配对,这样您就可以使用列表理解功能来过滤仅相差1的相邻对:

[b for a, b in zip(infs[:1] + infs, infs) if b - a != 1]

这将返回:
[0, 19, 24]

关于python - 删除列表中连续整数的最快,更有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55578072/

10-12 20:44