Python Iluminado

For Loops

img

O For Loop em Python é usado para iterar sob uma sequência (lista, tupla, string) ou outros objetos iteráveis. A iteração sob uma sequência também é conhecida como travessia.

O For Loop já é um conhecido nosso, pois utilizamos ele para percorrer nossas listas no passado, porém agora veremos ele com uma maior riqueza de detalhes e veremos que ele é muito importante, uma vez que nos permite percorrer diversas sequências (listas, tuplas, dicionários, sets e até mesmo strings).

Para escrevermos o for Loop devemos obedecer a seguinte sintaxe:

for seq in sequencia:
print(seq)

Onde seq é a variável que recebe o valor do item dentro da sequência em cada iteração, o loop continua até alcançarmos o último item da sequência.

É válido lembrar que o for em Python difere um pouco de outras linguagens como por exemplo C, onde nós podemos definir os passos de iteração e o momento de parada, em Python o for faz a iteração em cima dos itens de uma sequência, na ordem que eles aparecem naquela sequência, por exemplo:

animais = ["cachorro", "gato", "elefante"]
for animal in animais:
print(animal)

Simples, não? Também podemos percorrer strings:

for string in "Programação com Python":
print(string)

Se quisermos evitar a quebra de linha \n, podemos alterar o valor do argumento end:

for string in "Programação com Python":
print(string,end='')

A Função range()

Nós podemos gerar sequências de números através da função range(). Por exemplo, range(10) irá gerar números de 0 até 9 (10 números). A função range() também nos permite definir o começo da nossa sequência, o fim e os passos que serão dados como por exemplo range(começo,fim,passos), caso não venhamos a definir os passos, o padrão é que seja de 1 em 1.

Importante lembrar que a função não guarda todos os valores em memória por questões de eficiência, para forçarmos que a função imprima os itens, nós podemos utilizar a função list(), veja:

x = range(0,10)
print(type(x)) # <class 'range'> veja que o tipo retornado é 'range'
print(list(x)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
y = range(4,30,2)
print(list(y)) # [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28]

Podemos aplicar a função range() em conjunto com o for:

for i in range(10):
print(i)
for data in range(1995,2018):
print(data)

Condicionais

A palavra-chave break nos permite parar o loop antes que ele passe por todos os itens

paises = ['China', 'Índia', 'Tailândia']
for pais in paises:
print(pais)
if pais == "Índia":
break

Como podemos ver só serão impressos os países China e Índia, quando pais tiver o valor de Índia o loop irá parar e não será capaz de imprimir Tailândia.

A palavra-chave continue nos permite parar a iteração atual do loop e continuar para a próxima:

linguagens = ['C','Javascript','Python','Lua']
for linguagem in linguagens:
if linguagem == "Javascript":
continue
print(linguagem)

Como podem ver, ao chegamos em Javascript o loop pára e vai para a próxima impressão, nos retornando apenas 'C', 'Python' e 'Lua'.

Dessa forma é muito fácil criarmos um for loop para imprimir apenas números pares:

for x in range(10):
if x % 2 == 1:
continue
print(x)

Nos serão trazidos todos os números pares de 0 até 9.

Python nos permite também usarmos a palavra-chave else em conjunto com o for, por exemplo:

for x in range(10):
print(x)
else:
print("Loop finalizado com sucesso!")

Loops Encadeados

Loops encadeados são loops dentro de loops, o "loop de dentro" será executado uma vez para cada iteração do "loop de fora".

cores = ['azul','verde','amarelo']
numeros = [1,2,3]
for cor in cores:
for numero in numeros:
print(f'{cor.capitalize()} - {numero}')

Enumerando Valores

O método enumerate() adiciona um contador a um iterável e o retorna o objeto enumerate.

O método enumerate() recebe dois parâmetros:

  • iterable: Uma sequência, um iterator, ou objetos que suportam iteração
  • start (opcional): É o número que o método enumerate() iniciará contando, se start for omitido, 0 será o valor padrão.

Vejamos um exemplo de como podemos usá-lo:

alimentos = ['arroz','feijão','batata']
for indice,alimento in enumerate(alimentos):
print(f'{indice} -> {alimento}')

Informando o parâmetro start:

for indice,alimento in enumerate(alimentos,10):
print(f'{indice} -> {alimento}')

Dessa vez ele começará a contar a partir do número 10.

Vimos nestes exemplos que as utilidades do for são imensas e podem nos ajudar bastante no sentido de percorrer sequências e até mesmo gerá-las com range().