为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕斯王 2021-03-19 18:19:20
例如[[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 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

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列表中另一个列表的子集的任何列表。(将集合<=运算符实现为⊆)。


查看完整回答
反对 回复 2021-03-31
  • 1 回答
  • 0 关注
  • 818 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信