Comprensión de listas

Crear listas en Python es muy fácil. Se puede usar [0] * 50 para crear una lista de 50 elementos llenos de 0. Otra forma que proporciona un control más detallado sobre los elementos es iterar con un bucle for y agregar elementos uno por uno. Sin embargo, hay otra forma de crear una lista mediante la comprensión de listas. Si quisiéramos crear una lista de cuadrados para los números del 1 al 100, podríamos hacerlo con:
squares = []
for n in range(1, 100):
    squares.append(n * n)
print(squares)
squares = [n * n for n in range(1, 100)]
print(squares)
Ambos programas imprimirán la misma salida y crearán la misma lista de cuadrados: [1, 4, 9, 16, 25, 36, 49, 64, 81, ..., 9216, 9409, 9604, 9801].
Entonces, la sintaxis para la comprensión de listas es:
  1. La comprensión va dentro de corchetes [].
  1. El bucle for itera sobre valores.
  1. Los elementos de la lista vienen antes de la palabra clave for y pueden depender de la variable del bucle for.
 
En el caso de enviar invitaciones de cumpleaños, imagina que has creado una lista de nombres que nos gustaría invitar, pero accidentalmente los hemos escrito todos en minúsculas. Ahora podemos usar una comprensión de listas para corregir eso:
invites = [
    'anna', 
    'alice', 
    'bob', 
    'simon', 
    'thomas'
]
fixed = []
for name in invites:
    fixed.append(name.title())
print(fixed)
invites = [
    'anna', 
    'alice', 
    'bob', 
    'simon', 
    'thomas'
]
fixed = [name.title() for name in invites]
print(fixed)
Ambos programas imprimirán ['Anna', 'Alice', 'Bob', 'Simon', 'Thomas'].

Desafío

Dado n nombres y apellidos, se te pide extraer los nombres y imprimir tanto la lista inicial como la lista con solo nombres.
La primera línea de la entrada contiene un solo entero n. Las siguientes n líneas contienen pares nombre apellido.
El programa debe imprimir primero la lista inicial y luego la lista con solo nombres.
Entrada
Salida
3 Marshall Mathers Peter Hernandez Curtis Jackson
Marshall Mathers Peter Hernandez Curtis Jackson Marshall Peter Curtis
Consejo
Puedes usar .split()[0] para obtener el primer elemento después de dividir la cadena por espacios en blanco.
 
Incluso puedes imprimir con una comprensión de listas:
l = ['hi', 'my', 'name', 'is']
[print(item) for item in l]
hi
my
name
is
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue