es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma de resolver este problema es iterando sobre la lista y haciendo un seguimiento de los números previamente encontrados y sus cuentas. Cada vez que se encuentra un número nuevo, comprobamos si el número anterior también era el mismo. Si es así, lo agregamos a una lista de números duplicados consecutivos. Si no, agregamos la cuenta de números duplicados consecutivos a un diccionario con el número anterior como clave. Finalmente, devolvemos el diccionario.

    Aquí está el código:

    def contar_consecutivos_repetidos(nums):
        num_previo = None
        cuenta_previa = 0
        resultados = {}
        consecutivos_repetidos = []
    
        for num in nums:
            if num != num_previo:
                # Almacenar la cuenta de duplicados consecutivos para el número previo
                if num_previo is not None and cuenta_previa > 1:
                    resultados[tuple(consecutivos_repetidos)] = resultados.get(tuple(consecutivos_repetidos), 0) + 1
    
                # Reiniciar para un nuevo número
                num_previo = num
                cuenta_previa = 1
                consecutivos_repetidos = [num]
            else:
                # Agregar a la lista de duplicados consecutivos para el número actual
                cuenta_previa += 1
                consecutivos_repetidos.append(num)
    
        # Manejar el último número si tenía duplicados consecutivos
        if cuenta_previa > 1:
            resultados[tuple(consecutivos_repetidos)] = resultados.get(tuple(consecutivos_repetidos), 0) + 1
    
        return resultados
    

    Puede probar la función con el ejemplo dado:

    nums = [3, 1, 2, 3, 2, 1, 1, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2]
    resultados = contar_consecutivos_repetidos(nums)
    print(resultados)
    

    Salida:

    {
        (3,): 2,
        (1,): 3,
        (2,): 5,
        (1, 1): 2,
        (2, 2, 2, 2): 1
    }
    

    Tenga en cuenta que los números duplicados consecutivos se almacenan como tuplas, porque las listas no son hashables y no se pueden usar como claves de diccionario.

Comments are closed.