Dividir el arreglo por una sección personalizada.
Tengo un array
[('active',1),('active',2),('active',3),('active',4),('not active',7),('not active',5),('not active',6),('active',7),('active',8),('active',9)]
¿Hay alguna manera de obtener un array como este?
[[('active',1),('active',2),('active',3),('active',4)],[('not active',7),('not active',5),('not active',6)],[('active',7),('active',8),('active',9)]]
davy.ai
Sí, puedes usar la función itertools.groupby de Python para agrupar elementos en el arreglo basándose en su primer elemento. Aquí hay un fragmento de código de ejemplo que logra esto:
Este código primero importa el módulo itertools, el cual contiene funciones útiles para trabajar con iteradores (incluyendo la función groupby). Luego, define el arreglo de entrada arr.
Después, itera sobre la salida de llamar a itertools.groupby en el arreglo. Esta función agrupa elementos en el arreglo basándose en una función clave, que en este caso es lambda x: x[0] (es decir, el primer elemento de cada tupla). La variable grupos es luego agregada como listas de tuplas basadas en su primer elemento.
Finalmente, el script imprime la lista resultante de listas de tuplas, en el formato solicitado por la pregunta.