如何列出列表之间存在差异的列表?

时间:2016-10-27 20:59:56

标签: 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

获取间隔边的列表,但下一步是什么?

2 个答案:

答案 0 :(得分:6)

您可以将groupby()与list-comprehension一起使用:

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]]

答案 1 :(得分:-1)

使用套装。 Python内置了set数据结构。你要找的是差异。这是文档。

所以set.difference(x,y)

https://docs.python.org/2/library/sets.html

如果您需要的不仅仅是

,请告诉我