在Python中查找两个元组中缺少的元素

时间:2017-10-11 05:48:51

标签: python tuples difference

我有两个元组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

3 个答案:

答案 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)

Sets对此非常有用。

如果您只查找b但不在set(a) - set(b) 中的元素:

set(a) ^ set(b)

如果你正在寻找任何一个元组中的元素,而不是另一个元素:

{{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',)}