【发布时间】:2023-03-21 21:18:01
【问题描述】:
我正在尝试删除列表中存在于其他元素中的元素
例如:
l = ['word1', 'word1 word2', 'word3 word2', 'word2', 'word4']
函数的输出应该是:
['word3 word2', 'word1 word2', 'word4']
因为 'word1' 和 'word2' 分别出现在原始列表的索引 1 和 2 中
这是我想出的算法。它在 ~O(n^2)
中解决了这个问题l = ['word1', 'word1 word2', 'word3 word2', 'word2', 'word4']
s = set(l)
for root_word in l:
for item in (s-set([root_word])):
if root_word in item:
if root_word in s:
s.remove(root_word)
print(s)
有人知道更优化的解决方案吗?也许使用python内置函数来加快速度
【问题讨论】:
-
列表中是否有“word1 word2 word3”,输出会是什么?