Python: extrae pares similares de la lista

A veces, mientras trabajamos con listas de Python, podemos tener un problema en el que necesitamos realizar la extracción de todos los pares de elementos en la lista. Este tipo de problema puede tener aplicación en dominios como el desarrollo web y la programación diaria. Analicemos ciertas formas en que se puede realizar esta tarea.

Entrada : test_list = [1, 2, 3, 4]
Salida : []

Entrada : test_list = [2, 2, 2, 2, 3, 3, 4]
Salida : [(2, 2), (2, 2), (3, 3)]

Método n.° 1: usar Counter()la comprensión de listas +
La combinación de las funciones anteriores se puede usar para resolver este problema. En este, las frecuencias se extraen utilizando Counter() y la construcción de pares se realiza utilizando la comprensión de listas.

# Python3 code to demonstrate working of 
# Extract Similar pairs from List
# Using Counter() + list comprehension
from collections import Counter
  
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Extract Similar pairs from List
# Using Counter() + list comprehension
res = [(key, key) for key, val in Counter(test_list).items() 
                                  for _ in range(val // 2)]
  
# printing result 
print("The records after pairing : " + str(res)) 
Producción :

The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The records after pairing : [(4, 4), (6, 6), (2, 2)]

Método #2: Uso fromkeys()de la comprensión de listas +
Esta es otra forma más en la que se puede realizar esta tarea. En esto, realizamos la tarea de Counter() usando fromkeys() y get() del diccionario, es decir, obteniendo frecuencias.

# Python3 code to demonstrate working of 
# Extract Similar pairs from List
# Using fromkeys() + list comprehension
  
# initializing list
test_list = [4, 6, 7, 4, 2, 6, 2, 8]
  
# printing original list
print("The original list is : " + str(test_list))
  
# Extract Similar pairs from List
# Using fromkeys() + list comprehension
temp = dict.fromkeys(test_list, 0)
for key in test_list:
    temp[key] += 1
res = [(key, key) for key, val in temp.items() for _ in range(val // 2)]
  
# printing result 
print("The records after pairing : " + str(res)) 
Producción :

The original list is : [4, 6, 7, 4, 2, 6, 2, 8]
The records after pairing : [(4, 4), (6, 6), (2, 2)]

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 *