WS

Weslley Santana10/01/2024 20:20
Compartilhe

Dominando a iteração: Tudo que você precisa saber sobre For em Python

  • #Python

Introdução

Desbravando novos horizontes ao longo da sua épica jornada como programador, você com toda certeza aprendeu que existem estruturas feitas exclusivamente para guardar conjuntos de dados — como Listas, Dicionários e Tuplas — e suas minuciosas particularidades. Enquanto as estudava, é certo que surgiu a seguinte pergunta em sua mente: “Depois de colocar esses dados, como poderei usá-los depois?” e isso te trouxe até aqui. Pensando em como responder sua pergunta, os desenvolvedores do Python criaram o que chamamos de “Laço For”, que será o tema deste artigo.

Definição

Quando acessamos a seção sobre for na documentação oficial do Python, nos damos de cara com a seguinte explicação: “A instrução for é usada para iterar sobre os elementos de uma sequência (como uma string, tupla ou lista) ou outro objeto iterável”

Para que este enunciado fique mais claro, precisamos nos atentar a três conceitos simples:

  1. Tudo em Python é um objeto — Desde listas, strings, inteiros, booleans, funções, etc.
  2. Iteráveis são objetos que implementam o método __iter__ e, através da função built-in iter, conseguem retornar um objeto iterador, sem levantar a exceção TypeError.
  3. Iteradores implementam os métodos __iter__ — que retorna ele mesmo — e __next__() — que sempre fornece o próximo elemento da iteração.

Sabendo disso, podemos traduzir esta sentença para: “Todo objeto que possui o método __iter__ pode ser percorrido com a instrução for”. Portanto, utilizando esta estrutura de repetição, você, por exemplo, consegue passar por todos os dados inseridos numa lista e fazer o que bem entender com eles. Sugiro que pense em estruturas de repetição como ciclos dentro do seu código. No caso do for, a exceção StopIteration é levantada pelo método __next__() quando não há mais elementos para retornar, sinalizando que o ciclo terminou. Isso faz parte do mecanismo chamado “Iterator Protocol” e evita que ele continue infinitamente.

Estrutura

“Mas como posso utilizar isso no meu código, afinal?”

Afim de tornar a explicação mais palpável, vamos utilizar um exemplo simples: Imagine que você seja um estudante do fundamental e sua professora de matemática decide passar uma lista de números inteiros para que você calcule o resto da divisão deles por 2. Vejamos como faríamos isso em Python utilizando for:

listaDeNumeros = [2, 5, 7, 11, 20, 33]

for numero in listaDeNumeros:        # percorra a lista de números
  resto = numero % 2               # calcule o resto da divisão do número atual por 2
  print(resto)                     # mostre o resto na tela

Seguindo a ideia de ciclos dentro do código apresentada anteriormente, criamos uma variável chamada "numero" para representar o valor em que estamos em cada um desses ciclos. Ou seja: em cada ciclo, nossa variável numero assume um valor da lista, nos dando a possibilidade de fazermos o que quisermos com esse valor. Com “for numero in listaDeNumeros:” estamos dizendo, objetivamente, que nossa variável assumirá cada valor, um por vez, ordenadamente, até o fim da lista — No nosso caso, a cada ciclo pegamos o resto da divisão do número atual por 2 e o mostramos na tela para o usuário. A saída será:

0
1
1
1
0
1

Também é perfeitamente possível utilizar um for dentro de outro. É muito comum fazermos isso para acessar dados dentro de matrizes, por exemplo:

matriz = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
]

for lista in matriz:                 # percorra a matriz
  print(lista)                     # mostre a lista atual na tela
  for numero in lista:             # percorra a lista atual
      print(numero)                # mostre o número atual

Aqui, a cada lista que acessamos dentro da matriz, acessamos também seus valores e mostramos na tela para o usuário. A saída será assim:

[1, 2, 3]
1
2
3
[4, 5, 6]
4
5
6
[7, 8, 9]
7
8
9

Conclusão

Neste artigo, você aprendeu o que é o Laço For, como ele funciona por baixo dos panos — através do “Iterator Protocol” — e como utilizá-lo no seu código. Esta é uma ferramenta poderosíssima que possibilita a criação de diversos algoritmos — seja simples ou complexo — de maneira legível e extremamente prática. Caso você tenha interesse em se aprofundar um pouco mais em alguma das coisas que citei neste artigo, abaixo estão as fontes que me baseei para escrevê-lo:

Documentação oficial do Python: Seção sobre o For

The Iterator Protocol

Iterators and Iterables in Python: Run Efficient Iterations

Classes e Objetos - Fundamentos

Using for loops in Python

Compartilhe
Comentários (1)
Germano
Germano - 11/01/2024 23:48

Se tu vender curso ensinando a escrever artigo eu compro 🤣, nota 10