例如[[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列表中另一个列表的子集的任何列表。(将集合<=运算符实现为⊆)。
添加回答
举报
0/150
提交
取消