猿问

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

已知一个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']
慕工程0101907
浏览 362回答 2
2回答

qq_花开花谢_0

defget_without_proper_sub_element(s):defis_proper_sub_element(i):forjins:ifset(i).issubset(set(j))andset(i)!=set(j):returnTruereturnFalsereturn[iforiinsifnotis_proper_sub_element(i)]print(get_without_proper_sub_element(s))结果是:['GH','ABDCFE','EFCABD']这里面的后面两个'ABDCFE'和'EFCABD'根据现有描述是都要保留的,除非要求按顺序只保留第一个.

温温酱

你这里子元素的定义是什么,是不管顺序,只要任意一个字符相同就算,还是字符顺序也一致?不管哪种定义,你给出的结果都是错的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=iforyinlst:ifx!=yandlen(set(x).intersection(set(y)))==len(x):index=-1breakifindex!=-1:lst1.append(x)printlst1#字符相同且顺序一致lst1=[]fori,xinenumerate(lst):index=iforyinlst:ifx!=yandxiny:index=-1breakifindex!=-1:lst1.append(x)printlst1
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答