7.1 Multiplicação
Em Python tem uma sintaxe bacana que permite aumentar a quantidade de elementos. Para isso, usa-se o operador de multiplicação simples.
Geração de strings
Você pode aplicar isso a strings:
print("Mamãe" * 5) # vai imprimir MamãeMamãeMamãeMamãeMamãe
Ou, por exemplo, pode imprimir rapidamente um separador de strings:
print("-" * 40) # vai imprimir ----------------------------------------
Geração de listas
Você também pode multiplicar a quantidade de elementos em uma lista:
print(["apple"] * 5) # vai imprimir ['apple', 'apple', 'apple', 'apple', 'apple']
Esse operador tem uma aplicação mais prática. Por exemplo, se você quer criar uma lista de 10 elementos preenchidos com zeros:
alist = [0] * 10
print(alist) # vai imprimir [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Você pode até fazer um array bidimensional. Por exemplo, deseja criar um array 20x10, preenchido com zeros. Isso é igualmente fácil:
alist = [[0] * 10] * 20
print(alist) # vai imprimir [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], ...]
Muito prático, né?
7.2 List Comprehension
Python tem uma ferramenta útil chamada "List Comprehension" — é uma forma prática e compacta de criar listas. Esse recurso sintático permite gerar novas listas aplicando uma expressão a cada elemento de um objeto iterável em uma linha curta de código.
É mais fácil mostrar do que descrever. Este recurso sintático se parece com isso:
[expressão for variável in sequência]
Onde:
-
variável
— identificador de alguma variável, -
sequência
— sequência de valores que a variável assume (pode ser uma lista, string ou objeto obtido via funçãorange
), -
expressão
— alguma expressão, geralmente dependente da variável utilizada no gerador, que preencherá os elementos da lista.
Importante!
Toda a expressão deve estar entre
colchetes.
Aqui estão alguns exemplos de uso dos geradores:
Criar uma lista de n zeros também é possível com o gerador:
alist = [0 for i in range(100)]
Criar uma lista preenchida com os quadrados de números inteiros pode ser assim:
n = 5
alist = [i ** 2 for i in range(n)]
Criar uma lista preenchida com números inteiros de 1 a n:
n = 10
alist = [i + 1 for i in range(n)]
E assim você pode obter uma lista preenchida com números aleatórios de 1 a 9
(usando a função randrange()
do módulo random):
from random import randrange
n = 10
alist = [randrange(1, 10) for i in range(n)]
7.3 Loop em List Comprehension
List Comprehension não é usado só para gerar listas. Na real, é um jeito compacto de escrever um loop for.
Por exemplo, você pode simplesmente imprimir alguns valores de uma lista na tela:
alist = ["apple", "banana", "cherry"]
[print(x) for x in alist]
Ou até mesmo ler valores do teclado:
a = [input() for i in range(int(input()))]
Nesse exemplo, a lista será composta de strings lidas do input
padrão: primeiro você deve digitar o número de elementos da lista (esse valor será
usado como argumento da função
range
), depois — a quantidade de strings definidas.
No estilo mais tradicional, esse código seria assim:
n = int(input())
a = []
for i in range(n):
x = input()
a.append(x)
No geral, List Comprehension tem várias capacidades:
Podemos usar condições:
Incluir condições na expressão permite filtrar elementos, por exemplo, podemos criar uma lista só com números pares:
[x for x in range(10) if x % 2 == 0]
Loops aninhados:
O gerador permite usar loops aninhados, por exemplo, para criar arrays multidimensionais:
[(x, y) for x in range(3) for y in range(3)]
GO TO FULL VERSION