向量中缺少几个元素

Missing couple of elements in a vector

我在 numpy 中有一个数字向量。例如:

a = [0,1,2,3]

我有一个向量列表:

b = [[0,1] , [0,2], [0,3], [1,2], [1,3]]

Python 中允许我找到 b 中缺少的几个元素的最佳解决方案是什么?在这种情况下,它将是:

c = [2,3]

我要补充一点,元素的顺序并不重要,我只需要缺少的一对。

第一次尝试

我尝试使用 sets 的功能,通过 symmetric_difference 它在 b 的元素中给出了 a 的缺失元素:

for j in range(len(b)):
 list(set(b[j]).symmetric_difference(a)

但我没有设法找出算法的结尾或替代方法。

您可以先使用 itertools.combinations 创建所有组合,然后在 set 中使用 difference,如下所示:(这适用于多元素)

>>> import itertools

>>> a = [0,1,2,3]
>>> b =  [[0,1] , [0,2], [0,3], [1,3]]
>>> c = itertools.combinations(a,2)

>>> res = set(c).difference(map(tuple, b))
>>> list(map(list, res))
[[2, 3], [1, 2]]

# for more explanation
>>> set(itertools.combinations(a,2))
{(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)}