python - 如何制作列表之间具有差异的列表?

标签 python list

我有一些数字的列表:

l1 = [1,2,3,4,5,6,7]

还有一个:

l2 = [3,5,6]

我想获取包含存在于 l2 中但不存在于 l1 中的数字的间隔列表:

intervals = [[1,2],[4],[7]]

我尝试这样做:

current_common_line_no = 0
    for line in l1:
        if line in l2:
            current_common_line_no = line
        else:
            next_common_line_no = l2[(l2.index(current_common_line_no))+1]
            print next_common_line_no

获取区间边缘列表,但下一步是什么?

最佳答案

您可以将groupby()与列表理解结合使用:

from itertools import groupby    
[list(g) for k, g in groupby(l1, key=lambda x: x not in l2) if k]
# [[1, 2], [4], [7]]

关于python - 如何制作列表之间具有差异的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40294106/

相关文章:

python - 如何在 Django Rest 框架中设置 View

c# - 处理用作存储过程参数的列表的最佳方法

python - 如何在不知道索引的情况下从 numpy 数组中删除对象

python - python 列表切片的整数和引用

python - 有没有更有效的方法来重写多个 if-else 语句

python - 防止换行符被逐字读取到 python 脚本中

python - django urlresolver 抛出错误

对象创建时未创建 Python 新列表

javascript - 为什么javaScript中的这个循环函数不是每次都返回0?我将如何在 python 中做类似的事情?

python - 带有 bool 字段的 Django 查询注释