For Loops
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":continueprint(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:continueprint(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().