Resumo : neste tutorial, você aprenderá sobre os iteráveis e iteradores do Python.
Introdução aos iteráveis do Python
Em Python, um iterável é um objeto que inclui zero, um ou muitos elementos. Um iterável tem a capacidade de retornar seus elementos, um de cada vez.
Devido a esse recurso, você pode usar um for
loop para iterar sobre um iterável.
Na verdade, a range()
função é iterável porque você pode iterar sobre seu resultado:
for index in range(3):
print(index)
Linguagem de código: Python ( python )
Saída:
0
1
2
Linguagem de código: Python ( python )
Além disso, uma string é iterável porque você pode usar um loop for para iterar sobre ela:
str = 'Iterables'
for ch in str:
print(ch)
Linguagem de código: Python ( python )
Listas e tuplas também são iteráveis porque você pode fazer um loop sobre elas. Por exemplo:
ranks = ['high', 'medium', 'low']
for rank in ranks:
print(rank)
Linguagem de código: Python ( python )
A regra geral é que se você sabe se pode fazer um loop em algo, é iterável.
O que é um iterador
Um iterável pode ser iterado. E um iterador é o agente que realiza a iteração.
Para obter um iterador de um iterável, você usa a iter()
função. Por exemplo:
colors = ['red', 'green', 'blue']
colors_iter = iter(colors)
Linguagem de código: Python ( python )
Depois de ter o iterador, você pode obter o próximo elemento do iterável usando a next()
função:
colors = ['red', 'green', 'blue']
colors_iter = iter(colors)
color = next(colors_iter)
print(color)
Linguagem de código: Python ( python )
Saída:
red
Linguagem de código: Python ( python )
Cada vez que você chama a next()
função, ela retorna o próximo elemento no iterável. Por exemplo:
colors = ['red', 'green', 'blue']
colors_iter = iter(colors)
color = next(colors_iter)
print(color)
color = next(colors_iter)
print(color)
color = next(colors_iter)
print(color)
Linguagem de código: Python ( python )
Saída:
red
green
blue
Linguagem de código: Python ( python )
Se não houver mais nenhum elemento e você chamar a next()
função, receberá uma exceção.
colors = ['red', 'green', 'blue']
colors_iter = iter(colors)
color = next(colors_iter)
print(color)
color = next(colors_iter)
print(color)
color = next(colors_iter)
print(color)
# cause an excpetion
color = next(colors_iter)
print(color)
Linguagem de código: Python ( python )
Este exemplo mostra primeiro três elementos da lista de cores e depois emite uma exceção:
red
green
blue
Traceback (most recent call last):
File "iterable.py", line 15, in <module>
color = next(colors_iter)
StopIteration
Linguagem de código: Python ( python )
O iterador tem estado. Isso significa que uma vez que você consome um elemento do iterador, ele desaparece.
Em outras palavras, depois de concluir o loop em um iterador, o iterador fica vazio. Se você iterar novamente, não retornará nada.
Como você pode iterar sobre um iterador, o iterador também é um objeto iterável. Isso é bastante confuso. Por exemplo:
colors = ['red', 'green', 'blue']
iterator = iter(colors)
for color in iterator:
print(color)
Linguagem de código: Python ( python )
Saída:
red
green
blue
Linguagem de código: Python ( python )
Se você chamar a iter()
função e passar um iterador para ela, ela retornará o mesmo iterador.
Posteriormente, você aprenderá como criar iteráveis.
Resumo
- Um iterável é um objeto que pode ser iterado. Um iterável tem a capacidade de retornar um de seus elementos por vez.
- Um iterador é um agente que executa iteração. É estatal. E um iterador também é um objeto iterável.
- Use a
iter()
função para obter um iterador de um objeto iterável e a função next() para obter o próximo elemento do objeto iterável.