A veces, mientras trabajamos con Python Matrix, podemos tener un problema en el que necesitamos realizar la agrupación de todos los elementos que son iguales. Este tipo de problema puede tener aplicación en dominios de datos. Analicemos ciertas formas en que se puede realizar esta tarea.
Entrada : test_list = [1, 3, 4, 4, 2, 3]
Salida : [[1], [2], [3, 3], [4, 4]]Entrada : test_list = [1, 3, 4, 2]
Salida : [[1], [2], [3], [4]]
Método n.º 1: Uso de la comprensión de listas +groupby()
La combinación de las funciones anteriores proporciona una posible solución a este problema. En esto, realizamos la tarea de agrupar usando groupby() y la comprensión de listas asiste en la iteración.
# Python3 code to demonstrate working of # Group similar elements into Matrix # Using list comprehension + groupby() from itertools import groupby # initializing list test_list = [1, 3, 5, 1, 3, 2, 5, 4, 2] # printing original list print("The original list : " + str(test_list)) # Group similar elements into Matrix # Using list comprehension + groupby() res = [list(val) for key, val in groupby(sorted(test_list))] # printing result print("Matrix after grouping : " + str(res))
The original list : [1, 3, 5, 1, 3, 2, 5, 4, 2] Matrix after grouping : [[1, 1], [2, 2], [3, 3], [4], [5, 5]]
Método n.° 2: Uso de la comprensión de listas +Counter()
Este es otro enfoque más para este problema. En esto, obtenemos los valores junto con su frecuencia usando Counter() y luego empleamos la comprensión de listas para multiplicar cada elemento con frecuencia para obtener duplicados
# Python3 code to demonstrate working of # Group similar elements into Matrix # Using list comprehension + Counter() from collections import Counter # initializing list test_list = [1, 3, 5, 1, 3, 2, 5, 4, 2] # printing original list print("The original list : " + str(test_list)) # Group similar elements into Matrix # Using list comprehension + Counter() temp = Counter(test_list) res = [[key] * val for key, val in temp.items()] # printing result print("Matrix after grouping : " + str(res))
The original list : [1, 3, 5, 1, 3, 2, 5, 4, 2] Matrix after grouping : [[1, 1], [2, 2], [3, 3], [4], [5, 5]]
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