1

例如

[[712, -743, 741, 698], [673, 688, 712, -743, 741, 698], [688, 712, -743], [743, -712, -688]]

[712, -743, 741, 698]并且[688, 712, -743]是其中的一部分,[673, 688, 712, -743, 741, 698]所以我们删除前 2 个并且只保留[[673, 688, 712, -743, 741, 698]]

它们都是 int 我想知道检查所有列表并将其过滤掉的最快方法是什么我想检查列表中所有元素的 abs 值 [688、712、-743]e它们在另一个列表中,然后将其删除。还要删除一个方向相反且相差 -1

请让我知道是否清楚

4

1 回答 1

0
def simplify(l):
    i = 0
    while i < len(l):
        s = set(map(abs,l[i]))
        for x in xrange(len(l)):
            if x == i: continue
            if s <= set(map(abs,l[x])):
                l.pop(i)
                i -= 1
                break
        i += 1

这将删除作为 2d 列表中另一个列表的子集的任何列表。(set <= 运算符被实现为表示 ⊆)。

于 2013-06-09T04:20:41.763 回答