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.

shorthand si else en comprensión de lista

Este es mi código para obtener la mitad y el doble de los números pares e impares en una lista. Sé que funcionará con un bucle “for” en bloque. Pero quiero saber por qué la comprensión de lista no funcionó.

Gracias de antemano 😀

entrada = input('Ingrese una lista de números ').split()

<h1>Convertir todos los elementos a enteros</h1>

datos = [int(x) for x in entrada]

print(datos)

resultado = [(a/2 si a%2==0 else 2*a) para a en datos]

print(datos)

OUTPUT:
Ingrese una lista de números 3 4 5
[3, 4, 5]
[3, 4, 5]

[Programa finalizado]
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    La comprensión de lista dada en el código es correcta y debería funcionar bien. La razón por la que no obtienes ninguna salida es que estás imprimiendo la variable equivocada. En el código, estás imprimiendo la lista original “data” en lugar de la lista creada por la comprensión de lista “rslt”.

    Para solucionar este problema, simplemente cambia la instrucción de impresión de “print(data)” a “print(rslt)” como se muestra a continuación:

    entry = input('Ingresa una lista de números ').split()
    
    # Convierte todos los elementos en enteros
    data = [int(x) para x en entrada]
    
    print(data)
    
    # utiliza la comprensión de lista para hacer la mitad y el doble
    rslt = [(a/2 si a%2==0 else 2*a) para a en data]
    
    # imprime la lista de resultados
    print(rslt)
    

    Esto debería darte la salida deseada:

    Ingresa una lista de números 3 4 5
    [3, 4, 5]
    [6, 2.0, 10]
    

Comments are closed.