我有两个元组a = (('1',), ('2',), ('3',),)
和b = (('1',), ('3',),)
。我需要将结果设为(('2',),)
,因为2是a
中存在的元素,而不是b
中的元素。
我提到了这个Find intersection of two lists?和Is there a way to get the difference and intersection of tuples or lists in Python?来获取一个想法,但这些是用于列表而不是用于元组。我无法对元组使用intersection()。
我有没有办法在python元组中获得a-b
?
答案 0 :(得分:3)
转换为set
然后您可以获得差异,然后使用tuple
函数将其转换回tuple()
:
a = (('1',), ('2',), ('3',),)
b = (('1',), ('3',),)
result = tuple(set(a) - set(b))
print(result)
正在运行示例:https://repl.it/M1FD/1
如果你想要Symmetric Difference中的任何一个元素,但不在交集中:
set(a) ^ set(b)
或:
set(a).symmetric_difference(set(b))
正在运行示例:https://repl.it/M1FD/2
答案 1 :(得分:1)
答案 2 :(得分:0)
您仍然可以使用链接答案中描述的集:
In [1]: a = (('1',), ('2',), ('3',),)
In [2]: b = (('1',), ('3',),)
In [3]: set(a).intersection(set(b))
Out[3]: {('1',), ('3',)}
In [4]: set(a).difference(set(b))
Out[4]: {('2',)}