Python:一种快速删除列表列表中列表子集的方法

时间:2013-06-09 04:03:17

标签: python list merge duplicates

例如

[[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

如果清楚,请告诉我

1 个答案:

答案 0 :(得分: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&lt; =运算符实现为⊆)。