需求:一个列表中有若干字符串,要把其中包含其他字符串的元素去掉,只保留被包含的最短的字符串。
比如,["aa","aab","xaa","bu","xxxa","bu1","xxxa"],只保留"aa", "bu", "xxxa"。
ls1=["aa","aab","xaa","xxxa","xxxa","bu","bu1","xxxa"]
ls1=set(ls1)
ls1=list(ls1)
# 按字符串长度排序
ls1.sort(key = lambda ss:len(ss),reverse=True)
ls2 = []
for i,big_item in enumerate(ls1):
for small_item in ls1[i+1:]:
if small_item in big_item:
ls2.append(big_item)
for item in ls2:
ls1.remove(item)
print(ls1)