我有一個(gè)像這樣的列表:[[1, 2], [2, 4, 6], [6, 9], [9, 10, 11], [11, 20], [20, 25, 30]]我想從中刪除具有相同項(xiàng)目更大列表的較小列表。例如,上面列表的結(jié)果應(yīng)該是:[[2, 4, 6], [9, 10, 11], [20, 25, 30]]由于[1, 2]和[2, 4, 6]具有公共項(xiàng)2,并且len([2, 4, 6]) > len([1, 2])如果沒有可怕的嵌套 for 循環(huán),我想不出一種方法來做到這一點(diǎn)。謝謝!
1 回答

萬(wàn)千封印
TA貢獻(xiàn)1891條經(jīng)驗(yàn) 獲得超3個(gè)贊
你可以這樣做:
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]]
添加回答
舉報(bào)
0/150
提交
取消