Compreensão de listas

Criar listas em Python é muito fácil. Você pode usar [0] * 50 para criar uma lista de 50 elementos preenchidos com zeros. Outra maneira que oferece um controle mais preciso sobre os elementos é iterar com um loop for e adicionar elementos um por um. No entanto, há outra forma de criar uma lista através da compreensão de listas. Caso queiramos criar uma lista dos quadrados dos números de 1 a 100, poderíamos fazer isso com:
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 os programas imprimiriam a mesma saída e criariam a mesma lista de quadrados - [1, 4, 9, 16, 25, 36, 49, 64, 81, ..., 9216, 9409, 9604, 9801].
Assim, a sintaxe para compreensão de listas é:
  1. A compreensão está dentro de colchetes []
  1. O loop for itera sobre os valores
  1. Os elementos da lista vêm antes da palavra-chave for e podem depender da variável do loop for
 
No caso de enviar convites de aniversário, imagine que você criou uma lista de nomes que gostaríamos de convidar, mas acidentalmente os colocou todos em letras minúsculas. Agora podemos usar uma compreensão de lista para corrigir isso:
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 os programas irão imprimir ['Anna', 'Alice', 'Bob', 'Simon', 'Thomas'].

Desafio

Dado n nomes e sobrenomes, você é solicitado a extrair os nomes e imprimir tanto a lista inicial quanto a lista com apenas os nomes.
A primeira linha da entrada contém um único número inteiro n. As próximas n linhas contêm pares de nome sobrenome.
O programa deve imprimir primeiro a lista inicial e depois a lista com apenas os nomes.
Entrada
Saída
3 Marshall Mathers Peter Hernandez Curtis Jackson
Marshall Mathers Peter Hernandez Curtis Jackson Marshall Peter Curtis
Dica
Você pode usar .split()[0] para obter o primeiro elemento após dividir a string por espaços em branco.
 
Você pode até imprimir usando compreensão 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