CodeGym /Curso Java /Python SELF PT /Geração de listas

Geração de listas

Python SELF PT
Nível 7 , Lição 7
Disponível

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ção range),
  • 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)]
        
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION