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