已知一個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 回答

GCT1015
TA貢獻1827條經驗 獲得超4個贊
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))
結果是:
['GH', 'ABDCFE', 'EFCABD'] 這里面的后面兩個'ABDCFE'和'EFCABD'根據現有描述是都要保留的, 除非要求按順序只保留第一個.
添加回答
舉報
0/150
提交
取消