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 é:
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 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]