我在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)
但是我無法弄清楚演算法的結尾或替代方法。
uj5u.com熱心網友回復:
您可以先創建所有組合,itertools.combinations然后difference在set 如下使用:(這適用于多元素)
>>> 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)}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323929.html
