如何找到两个列表之间的公用子列表?

Chr*_*ris 3 python list set sublist

如果子列表也存在于另一个列表中,您如何查找或仅保留列表的子列表?

lsta = [['a','b','c'],['c','d','e'],['e','f','g']]
lstb = [['a','b','c'],['d','d','e'],['e','f','g']]
Run Code Online (Sandbox Code Playgroud)

我想做类似set(lsta)和set(lstb)的事情

Desired_List = [['a','b','c'],['e','f','g']]
Run Code Online (Sandbox Code Playgroud)

我之所以想执行set之类的原因是因为它的速度,因为我在非常重要的大型列表中执行此操作。

另外,稍微不相关,如果我想从lsta中减去lstb以得到

Desired_List2 = [['d','d','e']]
Run Code Online (Sandbox Code Playgroud)

Ash*_*ary 5

最好将列表列表更改为元组列表,然后可以轻松使用set操作:

>>> tupa = map(tuple, lsta)
>>> tupb = map(tuple, lstb)
>>> set(tupa).intersection(tupb)
set([('a', 'b', 'c'), ('e', 'f', 'g')])
>>> set(tupa).difference(tupb)
set([('c', 'd', 'e')])
Run Code Online (Sandbox Code Playgroud)