[INICIANTES] Como Fazer Loops for em Python - Programadores Brasil
Linguagens de programaçãoPython

[INICIANTES] Como Fazer Loops for em Python

8 Mins read

Você quer aprender como fazer loops em Python? Este é o lugar para você! Com a palavra reservada for, Python cria iterações ou repetições em um número determinado de vezes.

Vamos aprender sobre como fazer um loop for em Python
Vamos aprender sobre como fazer um loop for em Python

Curso Completo para conserto de Notebooks -> Veja também: [+] Pacote Full Stack para Iniciantes em Programação.

Curso para Desenvolvimento de Games -> Veja também: [+] Curso completo de Desenvolvimento de Games

Curso de Python para iniciantes ->  Veja também: [+] Pacote Python Faixa preta para iniciantes.

Tipos de iterações

Existem dois tipos de iterações em Python:

  • Iteração definida, em que o número de repetições é especificado explicitamente com antecedência;
  • Iteração indefinida, na qual o bloco de código é executado até que alguma condição seja atendida.

Para iterações indefinidas, é preciso usar while, mas este é um assunto para outro texto.

Os loops de iteração definida são frequentemente chamados de loops for porque é a palavra-chave usada para introduzi-los em quase todas as linguagens de programação, incluindo Python. Historicamente, as linguagens de programação oferecem alguns tipos variados de loop for. Agora vamos abordar esses diferentes usos.

Loop sobre um intervalo numérico

O loop for mais básico é uma instrução de intervalo numérico simples com valores inicial e final. O formato exato varia dependendo do idioma, mas normalmente se parece com isto:

# Programa em Python 3
# Exemplo de for em intervalo numérico

for i in range(10):
    print(i)

Resultado:

0
1
2
3
4
5
6
7
8
9

Aqui, o corpo do loop é executado dez vezes. A variável i assume o valor 0 na primeira iteração, 1 na segunda e assim por diante. Este método é muito mais simples do que em outras linguagens de programação como C ou Java, em que um loop for requer declarar o valor inicial e final da variável que sofre a iteração, além de como ela será iterada. Na sua forma mais simples, em Python, a variável sempre é iterada adicionando 1 ao valor atual de i.

Iterações a partir de qualquer valor inicial

Caso o valor inicial desejado para a variável não seja 0, é necessário declarar explicitamente dentro da função range(). Vejamos:

# Programa em Python 3
# Exemplo de for em intervalo numérico

for i in range(3,9):
    print(i)

Resultado:

3
4
5
6
7
8

Iterações com outros tipos de passo

Além das possibilidades já abordadas, é possível mudar a forma como será iterada a variável no loop for. Neste caso, é necessário adicionar um terceiro parâmetro na função range(). Veja um exemplo:

# Programa em Python 3
# Exemplo de for em intervalo numérico

for i in range(0,20,5):
    print(i)

Resultado:

0
5
10
15

Neste caso, o valor da variável i inicia o loop com o valor 0 a 19, totalizando 20 unidades, e imprime o seu valor a cada 5 iterações.

Se a intenção for fazer um loop decrescente, o código é um pouco diferente. Caso seja para decrescer 10 vezes até 0, siga o exemplo abaixo:

# Programa em Python 3
# Exemplo de for em intervalo numérico

for i in range(9,-1,-1): 
    print(i)

Resultado:

9
8
7
6
5
4
3
2
1
0

Loop em uma variável do tipo Collection

Este tipo de loop itera sobre uma Collection de objetos, em vez de especificar valores ou condições numéricas. Collection em Python podem ser listas ou tuplas, por exemplo. Este tipo de loop em outras linguagens como Php e Java é chamado de for each. Vejamos um exemplo:

# Programa em Python 3
# Exemplo de for em uma variável do tipo Collection

frutas = ['banana', 'maçã', 'uva']

for fruta in frutas: 
    print(fruta)

Resultado:

banana

maçã
uva

(AMAZON) Celulares da Xiaomi em promoção -> Veja também: [+] Celulares Xiaomi a partir de R$ 789,00 na Amazon. Confira.

Tipos de variáveis iteráveis

Um objeto iterável é aquele que pode passar pela função do Python chamada iter(), que retorna um iterator e pode ser usado em loop. Em Python, os seguintes tipos são iteráveis: String, List, Tuple, Set, Dict, arquivos abertos dentro do código e até mesmo objetos criados pelo usuário. Já os tipos numéricos, como Integer, Float ou Double, não podem ser iterados.

Iterator

Agora você sabe o que significa para um objeto ser iterável vamos falar sobre como obter e usar um objeto do tipo iterator. Um iterador é essencialmente um produtor de valor que produz valores sucessivos de seu objeto iterável associado. A função interna next() é usada para obter o próximo valor do iterador. Aqui está um exemplo usando a mesma lista acima:

# Programa em Python 3
# Exemplo de uso de iterator

frutas = ['banana', 'maçã', 'uva']

#com a função iter(), itr se torna um iterador da lista frutas
itr = iter(frutas)


print(next(itr))

print(next(itr))

print(next(itr))

Resultado:

banana

maçã
uva

Neste exemplo, frutas é uma lista iterável e itr é o iterator associado, obtido com iter(). Cada chamada da função next(itr) obtém o próximo valor de itr. O iterator mantém seu estado internamente e mantém em memória quais valores já foram obtidos, portanto, quando a função next() for chamada novamente, o programa sabe qual o valor a retornar. Mas e se o iterador ficar sem valores para retornar?

# Programa em Python 3
# Exemplo de uso de iterator

frutas = ['banana', 'maçã', 'uva']

#com a função iter(), itr se torna um iterador da lista frutas
itr = iter(frutas)

print(next(itr))

print(next(itr))

print(next(itr))

print(next(itr))

Resultado:

banana
maçã
uva
Traceback (most recent call last):
  File "<pyshell#10>", line 1, in <module>
    next(itr)
StopIteration

Se todos os valores de um iterator já tiverem sido retornados, uma chamada next() subsequente levantará uma exceção StopIteration. Quaisquer outras tentativas de obter valores do iterator falharão. Você só pode obter valores de um iterator em uma direção. Você não pode voltar atrás. Não há função prev(), mas você pode definir dois iterators independentes no mesmo objeto iterável. Exemplo:

# Programa em Python 3
# Exemplo de uso de 2 iterators

frutas = ['banana', 'maçã', 'uva']

#com a função iter(), itr1 e itr2 se tornam iteradores da lista frutas
itr1 = iter(frutas)
itr2 = iter(frutas)

print(next(itr1))

print(next(itr1))

print(next(itr2))

print(next(itr1))

Resultado:

banana
maçã
banana
uva

Mesmo quando o iterator itr1 já está no final da lista, itr2 ainda está no início. Cada iterador mantém seu próprio estado interno, independente do outro.

Se quiser obter todos os valores de um iterator de uma vez, você pode usar a função list() embutida. Entre outros usos possíveis, list() pega um iterator como argumento e retorna uma lista que consiste em todos os valores que o iterator produziu. Veja abaixo:

# Programa em Python 3
# Exemplo de uso de lista de iterator

frutas = ['banana', 'maçã', 'uva']

#com a função iter(), itr se torna um iterador da lista frutas
itr = iter(frutas)

print(list(itr))

Resultado:

['banana', 'maçã', 'uva']

Além de lista, é possível transformar iterator em outros tipos de Collection, usando funções tuple() e set(), que transforma itr em tupla e conjunto, respectivamente.

# Programa em Python 3
# Exemplo de uso de tupla e conjunto de iterator

frutas = ['banana', 'maçã', 'uva']

#com a função iter(), itr se torna um iterador da lista frutas
itr = iter(frutas)

print(tuple(itr))
print(set(itr))

Resultado:

('banana', 'maçã', 'uva')
{'banana', 'maçã', 'uva'}

Não é necessariamente aconselhável fazer disso um hábito. Parte da ideia do uso de iteradores é que eles são “preguiçosos”. Isso significa que quando você cria um iterador, ele não gera todos os itens que pode gerar naquele momento, esperando a função next() para que os outros sejam utilizados. Os itens não são criados até que sejam solicitados.

Ao usar list(), tuple() ou algo semelhante, você está forçando o iterador a gerar todos os seus valores de uma vez, para que todos possam ser retornados. Na verdade, é possível criar um iterador em Python que retorna uma série infinita de objetos usando funções geradoras e itertools. Se você tentar obter todos os valores de uma vez em um iterador infinito, o programa travará.

Python trata o loop em todos os iteráveis exatamente dessa maneira, e em Python, há muitos iteráveis e iteradores:

  • Muitos objetos internos e de biblioteca são iteráveis;
  • Existe um módulo de Biblioteca Padrão chamado itertools contendo muitas funções que retornam iteráveis;
  • Os objetos definidos pelo usuário criados com o recurso orientado a objetos do Python podem ser tornados iteráveis;
  • Python apresenta umconstruto chamado gerador que permite criar seu próprio iterador de uma maneira simples e direta.

Você descobrirá mais sobre tudo isso ao longo desta série. Todos eles podem ser o alvo de um loops em Python, e a sintaxe é a mesma em todas as áreas.

Iterando sobre um dicionário

Você viu anteriormente que um iterador pode ser obtido de um dicionário com iter(), então você sabe que os dicionários devem ser iteráveis. O que acontece quando você percorre um dicionário? Vamos ver:

# Programa em Python 3
# Exemplo de loop for com dicionario

dicionario = {'a': 1, 'b':2, 'c':3}

for d in dicionario:
   print(d)

Resultado:

a
b
c

Como você pode ver, quando um loop for iterar através de um dicionário, a variável de loop é atribuída às chaves do dicionário. Para acessar os valores do dicionário dentro do loop, você pode fazer uma referência de dicionário usando a chave ou então usando a função .values():

# Programa em Python 3
# Exemplo de uso de loop for com dicionario

dicionario = {'a': 1, 'b':2, 'c':3}

for valor in dicionario:
   print(dicionario[valor])

for valor in dicionario.values():
   print(valor)

Resultado:

1
2
3

1
2
3

Na verdade, você pode iterar pelas chaves e pelos valores de um dicionário simultaneamente. Isso ocorre porque ao fazer um loop em Python, não é limitado a apenas uma única variável. Também pode ser uma tupla, caso em que as atribuições são feitas a partir dos itens iteráveis de forma parecida com uma atribuição:

# Programa em Python 3
# Exemplo de uso de loop for com mais de uma variável

i,j = (1,2)

print(i,j)

for i,j in [(1,2),(3,4),(5,6)]:
   print(i,j)

Resultado:

1 2
1 2
3 4
5 6

Uma forma mais simples de iterar sobre os valores da tupla de chave e valor do dicionário é utilizar a função .items(). Veja o exemplo:

# Programa em Python 3
# Exemplo de uso de loop for com dicionario

dicionario = {'a': 1, 'b':2, 'c':3}

for chave,valor in dicionario.items():
  print('chave =', chave ', valor =', valor)

Resultado:

chave = a, valor= 1
chave = b, valor= 2
chave = c, valor= 3

Alterando o comportamento de um loop for

Um loop for em Python podem ter seu comportamento alterado utilizando else, break e continue, cada um produz um resultado diferente.

Break e Continue

Break e continue funcionam da mesma forma em loops for e while. Break termina o loop completamente e segue para a próxima instrução após o loop. Já continue passa para a próxima iteração do loop. Vejamos um exemplo:

# Programa em Python 3
# Exemplo de uso de loop for com continue e break

frutas = ['banana', 'maçã', 'uva']

for fruta in frutas:
   if 'm' in fruta:
     break
   print(fruta)

for fruta in frutas:
   if 'b' in fruta:
      continue
   print(fruta)

Resultado:

banana

maçã
uva

A primeira lista completa a primeira iteração e então interrompe na segunda, imprimindo apenas a palavra banana. Na segunda, começa com uma palavra que contém a letra b, então passa para a próxima iteração e imprime os dois valores restantes da lista.

Else

Um loop for também pode ter uma cláusula else. A interpretação é análoga à de um loop while. A cláusula else será executada se o loop terminar por esgotamento do iterável:

# Programa em Python 3
# Exemplo de uso de loop for com else

frutas = ['banana', 'maçã', 'uva']

for fruta in frutas:
   print(fruta)
else:
   print('acabei a lista')

Resultado:

banana
maçã
uva
acabei a lista

A cláusula else não será executada se a iteração da lista for interrompida break:

# Programa em Python 3
# Exemplo de uso de loop for com else

frutas = ['banana', 'maçã', 'uva']

for fruta in frutas:
   if 'm' in fruta:
     break
   print(fruta)
   else:
      print('acabei a lista')

Resultado:

banana

Com isso encerramos a nossa introdução de como fazer um loop for em Python, mas é o tipo de estrutura que pode ser usada para os mais diversos tipos de códigos e é muito útil no dia-a-dia.

Estamos sempre trazendo dicas de programação em Python, a nossa última dica foi sobre herança de classe. Até a próxima!


Deixe o seu comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Continue Lendo

Javascript Online: Top 5 Melhores Sites para programar

[Iniciantes] Aprenda a Como Fazer ForEach em Javascript

Next.js: Conheça o Framework para ReactJS

[Python] Criando um Layout Interativo com Tkinter

[Python] Construindo um Layout para seu App usando Tkinter

[Python] Tkinter - Aprenda a Programar em Python Com Interfaces Gráficas

[Iniciantes] Python List: Aprenda como Manipular as Listas

[Iniciantes] Veja Como Instalar o Python 3 no Windows

WooCommerce: Veja Como Criar Sua Loja Virtual Wordpress

Sistema SAP: Entenda o que é e Como Funciona