Python – Extraer tuplas simétricas

A veces, mientras trabajamos con tuplas de Python, podemos tener un problema en el que necesitamos extraer todos los pares que son simétricos, es decir, para cualquier (x, y), tenemos un par (y, x) presente. Este tipo de problema puede tener aplicación en dominios como la programación diaria y el desarrollo web. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [(6, 7), (2, 3), (7, 6)]
Salida : {(6, 7)}

Entrada : test_list = [(6, 7), (2, 3)]
Salida : {}

Método #1: Usar la comprensión del diccionario +set()
La combinación de las funcionalidades anteriores se puede usar para resolver este problema. En esto, inicialmente construimos pares inversos, y luego los comparamos con los pares de listas originales y extraemos uno de iguales. El set() se usa para eliminar duplicados, para evitar cálculos innecesarios de elementos.

# Python3 code to demonstrate working of 
# Extract Symmetric Tuples
# Using dictionary comprehension + set()
  
# initializing list
test_list = [(6, 7), (2, 3), (7, 6), (9, 8), (10, 2), (8, 9)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Extract Symmetric Tuples
# Using dictionary comprehension + set()
temp = set(test_list) & {(b, a) for a, b in test_list}
res = {(a, b) for a, b in temp if a < b}
  
# printing result 
print("The Symmetric tuples : " + str(res)) 
Producción :

The original list is : [(6, 7), (2, 3), (7, 6), (9, 8), (10, 2), (8, 9)]
The Symmetric tuples : {(8, 9), (6, 7)}

Método #2: Uso Counter()de la comprensión de listas +
Esta es otra forma en la que se puede realizar esta tarea. En esto, seguimos un enfoque similar de construcción de pares inversos, pero aquí contamos los elementos iguales, el elemento con la cuenta 2 está duplicado y coincide con las tuplas invertidas.

# Python3 code to demonstrate working of 
# Extract Symmetric Tuples
# Using Counter() + list comprehension
from collections import Counter
  
# initializing list
test_list = [(6, 7), (2, 3), (7, 6), (9, 8), (10, 2), (8, 9)]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Extract Symmetric Tuples
# Using Counter() + list comprehension<
temp = [(sub[1], sub[0]) if sub[0] < sub[1] else sub for sub in test_list]
cnts = Counter(temp)
res = [key for key, val in cnts.items() if val == 2]
  
# printing result 
print("The Symmetric tuples : " + str(res)) 
Producción :

The original list is : [(6, 7), (2, 3), (7, 6), (9, 8), (10, 2), (8, 9)]
The Symmetric tuples : [(7, 6), (9, 8)]

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 *