【发布时间】:2023-03-17 03:20:01
【问题描述】:
a=['-a', ('-c', 'd'), ('-d', 'c')]
b=['-b', ('c', '-d'), ('d', '-c')]
基本上,对于每个列表,如果另一个列表中有一些元组与它具有相同的元素,则从两个列表中删除所有具有该元素的元组。
(我使用的是集合而不是元组,但在我的代码中某处出现错误
说:不可散列的类型:'set',所以我把它改成了元组......)
res=[]
for i in a:
for j in b:
if type(i) == tuple and type(j) == tuple:
if i[0] in j and i[1] in j:
res.append(i)
res.append(j)
a,b=list(set(a)-set(res)),list(set(b)-set(res))
print(a,b)
这给出了a=['a'],b=['-b'],是否有更好的方法(可能是一些简单的内置函数)来做同样的事情?
更多示例
>>>a=['-a', ('-c', 'd'), ('-d', 'c'), ('-d', 'c')]
>>>b=['-b', ('c', '-d'), ('d', '-c'), ('-d', 'c')]
>a=['a'],b=['-b']
>>>a=['-a', ('a', 'b'),('-c', 'd'), ('-d', 'c'), ('-d', 'c')]
>>>b=['-b', ('c', '-d'), ('d', '-c'), ('-d', 'c')]
>a=['a',('a', 'b')],b=['-b']
【问题讨论】:
标签: python