我正在处理带有字符串列表的python脚本。我想创建一个方法,它接受一个字符串列表并返回一个超集列表并删除子集。考虑以下情况:
A = ['this is a sentence', 'who is alice', 'sentence', 'hi i am carrot', 'i am carrot']
现在,如果你看到array A
,它有两个元素是一对超集和子集,'this is a sentence'
是'sentence'
的超集,类似'hi i am carrot'
和{{ 1}}我想编写一个从列表中删除子集并返回更新列表的函数。
在上面的示例中,输出看起来像:
'i am carrot'
我已经编写了一个快速代码示例,可以展示我正在寻找的内容,但我不确定是否使用两个ResultA = ['this is a sentence', 'who is alice', 'hi i am carrot']
循环是正确的方式:
for
答案 0 :(得分:1)
[x for i, x in enumerate(A) if all(i==idx or x not in elem for idx, elem in enumerate(A))]
这会在A
中构建一个列表,列出A
中每个项目与该项目共享一个索引(即属于同一项目)或者不是该项目的子字符串。“ / p>
答案 1 :(得分:1)
此A
的{{1}}项不是in
中A
的另一项,而是跳过项目完全匹配的实例(即跳过自己)
[x for x in A if not any(x in y and x!=y for y in A)]
# returns:
['this is a sentence', 'who is alice', 'hi i am carrot']
答案 2 :(得分:0)
一种简单的方法是遵循(虽然效率不高):
def myFunc(A):
duplicate_index = []
for i, a in enumerate(A):
score = [1 if a in b else 0 for b in A]
if sum(score) > 1:
duplicate_index.append(i)
return [c for i, c in enumerate(A) if i not in duplicate_index]