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 です。リストのすべてのリストをチェックしてフィルターで除外する最も速い方法は何かと考えていました。リスト内のすべての要素の絶対値[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 に答える