python - 在python中有条件的列表中删除数字

标签 python list sequence drop

我试图删除位于列表中连续数字之间的数字。例子:
形式 [1, 3, 5, 6, 7, 8, 9, 11, 12, 13, 18][1, 3, 5, 9, 11, 13, 18]你会丢弃 [6, 7, 8] 和 [12]

最佳答案

你可以试试 itertools.groupby :

from itertools import groupby

lst = [1, 3, 5, 6, 7, 8, 9, 11, 12, 13, 18]

out = []
for _, g in groupby(enumerate(lst), lambda k: k[0] - k[1]):
    g = list(g)
    out.append(g[0][1])
    if len(g) > 1:
        out.append(g[-1][1])

print(out)
打印:
[1, 3, 5, 9, 11, 13, 18]

关于python - 在python中有条件的列表中删除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67233974/

相关文章:

Python:在需要参数时使用 super() 调用基类的 __init__() 方法

python - matplotlib 框架中的 pandas 直方图,具有日期重采样功能

python - 提取文本 :after an element with Beautiful Soup

c++ - Concept -> input 生成不同大小的列表,这些列表可能会相互添加元素

swift - 将 Collection 的子序列转换为 String

r - 什么时候需要在 if 语句周围加上括号来控制 R 中公式的顺序?

arrays - 如何将序列转换为数组?

python - 查找列表中的元素

python - 通过迭代创建列表的最快方法

python - Pandas - 迭代时重复行