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

删除具有列表列表中常见项目的较小列表

删除具有列表列表中常见项目的较小列表

慕桂英546537 2021-08-11 20:02:47
我有一个像这样的列表:[[1, 2], [2, 4, 6], [6, 9], [9, 10, 11], [11, 20], [20, 25, 30]]我想从中删除具有相同项目更大列表的较小列表。例如,上面列表的结果应该是:[[2, 4, 6], [9, 10, 11], [20, 25, 30]]由于[1, 2]和[2, 4, 6]具有公共项2,并且len([2, 4, 6]) > len([1, 2])如果没有可怕的嵌套 for 循环,我想不出一种方法来做到这一点。谢谢!
查看完整描述

1 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

你可以这样做:


data = [[1, 2], [2, 4, 6], [6, 9], [9, 10, 11], [11, 20], [20, 25, 30]]


result = []

for e in sorted(data, key=len, reverse=True):

    if not any(set(e).intersection(prev) for prev in result):

        result.append(e)


print(result)

输出


[[2, 4, 6], [9, 10, 11], [20, 25, 30]]


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

添加回答

举报

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