Python – Intersección de lista de tuplas (independientemente del orden)

Dada la lista de tuplas, realice la intersección de tuplas de elementos independientemente de su orden.

Entrada : test_list1 = [(3, 4), (5, 6)], test_list2 = [(5, 4), (4, 3)] 
Salida : {(3, 4)} 
Explicación : (3, 4) y (4, 3) son comunes, por lo tanto, intersección (orden independientemente).

Entrada : test_list1 = [(3, 4), (5, 6)], test_list2 = [(5, 4), (4, 5)] 
Salida : set() 
Explicación : No hay elemento de intersección presente. 
 

Método #1: Usar sorted() + set() + & operator + comprensión de lista 
La combinación de las funciones anteriores se puede usar para resolver este problema. En esto, ordenamos las tuplas y realizamos la intersección usando el operador &. 

Python3

# Python3 code to demonstrate working of
# Tuple List intersection [ Order irrespective ]
# Using sorted() + set() + & operator + list comprehension
 
# initializing lists
test_list1 = [(3, 4), (5, 6), (9, 10), (4, 5)]
test_list2 = [(5, 4), (3, 4), (6, 5), (9, 11)]
 
# printing original list
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
# Using sorted() + set() + & operator + list comprehension
# Using & operator to intersect, sorting before performing intersection
res = set([tuple(sorted(ele)) for ele in test_list1]) & set([tuple(sorted(ele)) for ele in test_list2])
 
# printing result
print("List after intersection : " + str(res))
Producción : 

The original list 1 is : [(3, 4), (5, 6), (9, 10), (4, 5)]
The original list 2 is : [(5, 4), (3, 4), (6, 5), (9, 11)]
List after intersection : {(4, 5), (3, 4), (5, 6)}

 

Método n.º 2: usar la comprensión de listas + map() + frozenset() + & operator 
La combinación de las funciones anteriores se puede usar para realizar esta tarea. En este, realizamos la tarea de conversión de los contenedores internos a conjuntos, que lo ordena y realiza la intersección. Frozenset se usa como hashable, y map() requiere un tipo de datos hashable como argumento.

Python3

# Python3 code to demonstrate working of
# Tuple List intersection [ Order irrespective ]
# Using list comprehension + map() + frozenset() + & operator
 
# initializing lists
test_list1 = [(3, 4), (5, 6), (9, 10), (4, 5)]
test_list2 = [(5, 4), (3, 4), (6, 5), (9, 11)]
 
# printing original list
print("The original list 1 is : " + str(test_list1))
print("The original list 2 is : " + str(test_list2))
 
# Using list comprehension + map() + frozenset() + & operator
# frozenset used as map() requires hashable container, which
# set is not, result in frozenset format
res = set(map(frozenset, test_list1)) & set(map(frozenset, test_list2))
 
# printing result
print("List after intersection : " + str(res))
Producción : 

The original list 1 is : [(3, 4), (5, 6), (9, 10), (4, 5)]
The original list 2 is : [(5, 4), (3, 4), (6, 5), (9, 11)]
List after intersection : {frozenset({4, 5}), frozenset({5, 6}), frozenset({3, 4})}

 

Publicación traducida automáticamente

Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *