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