2017-10-11 183 views
2

我有兩個元組a = (('1',), ('2',), ('3',),)b = (('1',), ('3',),)。我需要得到結果爲(('2',),),因爲2是存在於a而不是b中的元素。在Python中找到兩個元組中的缺失元素

我提到這個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

轉換爲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

Sets對此非常有用。

如果你只尋找那些在a元素,但不是在b

set(a) - set(b) 

如果你正在尋找的是在元組中的任何一個元素,而不是其他:

set(a)^set(b) 
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',)}