2 回答

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超9個(gè)贊
def get_without_proper_sub_element(s):
def is_proper_sub_element(i):
for j in s:
if set(i).issubset(set(j)) and set(i) != set(j):
return True
return False
return [i for i in s if not is_proper_sub_element(i)]
print(get_without_proper_sub_element(s))
結(jié)果是:
['GH', 'ABDCFE', 'EFCABD'] 這里面的后面兩個(gè)'ABDCFE'和'EFCABD'根據(jù)現(xiàn)有描述是都要保留的, 除非要求按順序只保留第一個(gè).

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
你這里子元素的定義是什么,是不管順序,只要任意一個(gè)字符相同就算,還是字符順序也一致?
不管哪種定義,你給出的結(jié)果都是錯(cuò)的
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']
#只要任意一個(gè)字符相同
lst1 = []
for i, x in enumerate(lst):
index = i
for y in lst:
if x != y and len(set(x).intersection(set(y))) == len(x):
index = -1
break
if index != -1:
lst1.append(x)
print lst1
#字符相同且順序一致
lst1 = []
for i, x in enumerate(lst):
index = i
for y in lst:
if x != y and x in y:
index = -1
break
if index != -1:
lst1.append(x)
print lst1
添加回答
舉報(bào)