猿问

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

我有一个像这样的列表:

[[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 循环,我想不出一种方法来做到这一点。谢谢!


慕桂英546537
浏览 111回答 1
1回答

万千封印

你可以这样做: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]]
随时随地看视频慕课网APP

相关分类

Python
我要回答