猿问

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

例如


[[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的那个


慕斯王
浏览 819回答 1
1回答

动漫人物

def simplify(l):&nbsp; &nbsp; i = 0&nbsp; &nbsp; while i < len(l):&nbsp; &nbsp; &nbsp; &nbsp; s = set(map(abs,l[i]))&nbsp; &nbsp; &nbsp; &nbsp; for x in xrange(len(l)):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if x == i: continue&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if s <= set(map(abs,l[x])):&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; l.pop(i)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i -= 1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; &nbsp; &nbsp; i += 1这将删除作为2d列表中另一个列表的子集的任何列表。(将集合<=运算符实现为⊆)。
随时随地看视频慕课网APP

相关分类

Python
我要回答