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 fornece um controle mais detalhado sobre os elementos é iterar com um loop for e adicionar elementos um por um. No entanto, existe outra forma de criar uma lista através da compreensão de listas. Se quisermos 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].
Então, a sintaxe para compreensão de listas é:
A compreensão está dentro de colchetes [].
O loop for itera sobre os valores.
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 escreveu todos em 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 imprimirão ['Anna', 'Alice', 'Bob', 'Simon', 'Thomas'].
Desafio
Dadas n nomes e sobrenomes, você deve 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 inteiro n. As próximas n linhas contêm pares nome sobrenome.
O programa deve primeiro imprimir 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é mesmo imprimir com compreensão de listas:
l = ['hi', 'my', 'name', 'is']
[print(item) for item in l]