在 python 2.7 中是否有任何函数或方法可以递归地实现这一点?
Input : ['and', ['or', 'P', '-R', 'P'], ['or', '-Q', '-R', 'P']]
Output : ['and', ['or', 'P', '-R'], ['or', '-Q', '-R', 'P']]
将 sublist1 中的重复“P”删除为重复项
Input : ['and', ['or', 'P', '-R', 'P'], ['or', '-Q', '-R', 'P'], ['or', 'P', '-R', 'P']]
Output : ['and', ['or', 'P', '-R'], ['or', '-Q', '-R', 'P']]
删除 sublist1 中的重复 'P' 作为重复项,并删除 sublist3 作为 sublist1 的重复项
谢谢
最佳答案
我认为您必须创建一个自定义 remove duplicate
函数以保留子列表的顺序。试试这个:
def rem_dup(lis):
y, s = [], set()
for t in lis:
w = tuple(sorted(t)) if isinstance(t, list) else t
if not w in s:
y.append(t)
s.add(w)
return y
inp = ['and', ['or', 'P', '-R', 'P'], ['or', '-Q', '-R', 'P'], ['or', 'P', '-R', 'P']]
out = [rem_dup(i) if isinstance(i, list) else i for i in rem_dup(inp)]
>>>out
['and', ['or', 'P', '-R'], ['or', '-Q', '-R', 'P']]
关于Python : Remove duplicate elements in lists and sublists; and remove full sublist if duplicate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29179843/