为了账号安全,请及时绑定邮箱和手机立即绑定

list中每一个元素是否是中list中其他元素的子元素

list中每一个元素是否是中list中其他元素的子元素

慕工程0101907 2019-08-21 12:12:31
已知一个list,求这个list中每一个元素是否是其他元素的子元素,如果是,则删除这个元素.list=['GH','ACDB','AB','ABCFE','ABDCFE','ACFE','ABCD','ABD','ACBD','ACD','FCBA','FCDBA','FCA','FC','BACF','BCF','BDCF','BACFE','BCFE','BDCFE','BACD','BCD','BD','CBA','CDBA','CA','CAB','CDB','CB','EF','EFC','EFCABD','EFCBD','EFCD','DBACF','DBCF','DCF','DBAC','DBC','DC']如上段代码,最后list应该剩下的元素是list=['ABDCFE','GH']
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

defget_without_proper_sub_element(s):
defis_proper_sub_element(i):
forjins:
ifset(i).issubset(set(j))andset(i)!=set(j):
returnTrue
returnFalse
return[iforiinsifnotis_proper_sub_element(i)]
print(get_without_proper_sub_element(s))
结果是:
['GH','ABDCFE','EFCABD']
这里面的后面两个'ABDCFE'和'EFCABD'根据现有描述是都要保留的,除非要求按顺序只保留第一个.
                            
查看完整回答
反对 回复 2019-08-21
?
温温酱

TA贡献1752条经验 获得超4个赞

你这里子元素的定义是什么,是不管顺序,只要任意一个字符相同就算,还是字符顺序也一致?不管哪种定义,你给出的结果都是错的
lst=['GH','ACDB','AB','ABCFE','ABDCFE','ACFE','ABCD','ABD','ACBD','ACD','FCBA','FCDBA','FCA','FC','BACF','BCF','BDCF','BACFE','BCFE','BDCFE','BACD','BCD','BD','CBA','CDBA','CA','CAB','CDB','CB','EF','EFC','EFCABD','EFCBD','EFCD','DBACF','DBCF','DCF','DBAC','DBC','DC']
#只要任意一个字符相同
lst1=[]
fori,xinenumerate(lst):
index=i
foryinlst:
ifx!=yandlen(set(x).intersection(set(y)))==len(x):
index=-1
break
ifindex!=-1:
lst1.append(x)
printlst1
#字符相同且顺序一致
lst1=[]
fori,xinenumerate(lst):
index=i
foryinlst:
ifx!=yandxiny:
index=-1
break
ifindex!=-1:
lst1.append(x)
printlst1
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 361 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号