2017-10-11 5 views
2

J'ai deux tuples a = (('1',), ('2',), ('3',),) et b = (('1',), ('3',),). Je dois obtenir le résultat comme (('2',),) puisque, 2 est l'élément qui est présent dans a et pas dans b.Trouver les éléments manquants parmi deux tuples en Python

J'ai référé ce Find intersection of two lists? et Is there a way to get the difference and intersection of tuples or lists in Python? pour avoir une idée, mais ce sont pour les listes et non pour les tuples. Je ne suis pas capable d'utiliser intersection() pour les tuples.

Y at-il un moyen que je peux obtenir a-b dans les tuples python?

Répondre

3

Convertir en set alors vous pouvez obtenir la différence, puis la reconvertir en tuple en utilisant tuple() fonction:

a = (('1',), ('2',), ('3',),) 
b = (('1',), ('3',),) 

result = tuple(set(a) - set(b)) 
print(result) 

exemple Exécution: https://repl.it/M1FD/1


Si vous voulez que le Symmetric Difference, des éléments dans les deux ensemble mais pas à l'intersection:

set(a)^set(b) 

ou:

set(a).symmetric_difference(set(b)) 

exemple Exécution: https://repl.it/M1FD/2

1

Sets sont très utiles pour cela.

Si vous êtes à la recherche que pour les éléments qui sont a mais pas dans b:

set(a) - set(b) 

Si vous êtes à la recherche d'éléments qui sont dans l'un des tuples, mais pas l'autre:

set(a)^set(b) 
0

Vous pouvez toujours utiliser des ensembles comme décrit dans la réponse liée:

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