【发布时间】:2020-11-02 17:02:55
【问题描述】:
有没有办法从包含子列表的列表中删除列表?
假设我有从 a 到 e 的 5 个元素。
我在下面找到了从 0 号到 5 号的所有组合:
all_combinations = [[], ['a'], ['b'], ['c'], ['d'], ['e'], ['a', 'b'], ['a', 'c'], ['a', 'd'], ['a',
'e'], ['b', 'c'], ['b', 'd'], ['b', 'e'], ['c', 'd'], ['c', 'e'], ['d', 'e'],
['a', 'b', 'c'], ['a', 'b', 'd'], ['a', 'b', 'e'], ['a', 'c', 'd'], ['a', 'c',
'e'], ['a', 'd', 'e'], ['b', 'c', 'd'], ['b', 'c', 'e'], ['b', 'd', 'e'],
['c', 'd', 'e'], ['a', 'b', 'c', 'd'], ['a', 'b', 'c', 'e'], ['a', 'b',
'd', 'e'], ['a', 'c', 'd', 'e'], ['b', 'c', 'd', 'e'], ['a', 'b', 'c', 'd', 'e']]
现在假设我要删除其中一些包含子列表的组合:
sublists = [['a', 'c'], ['c', 'd'], ['b', 'e']]
有没有一种简单的方法可以做到这一点?我应该只留下不包含这些子列表的组合。我应该只得到 a 和 c 不在一起、c 和 d 不在一起、b 和 e 不在一起的列表。
编辑:想要得到这样的输出:
valid_combinations = [[], ['a'], ['b'], ['c'], ['d'], ['e'], ['a', 'b'],
['a', 'd'], ['a', 'e'], ['b', 'c'], ['b', 'd'],
['c', 'e'], ['d', 'e'], ['a', 'b', 'd'],
['a', 'd', 'e']]
【问题讨论】:
-
[sl for sl in all_combinations if not any(set(e)>=set(sl) for e in sublists)]