40 lines
2.0 KiB
Markdown
40 lines
2.0 KiB
Markdown
---
|
||
title: Python Iterators
|
||
localeTitle: Iteradores Python
|
||
---
|
||
O Python suporta um conceito de iteração sobre contêineres. Isso é implementado usando dois métodos distintos; eles são usados para permitir que classes definidas pelo usuário suportem a iteração.
|
||
|
||
[Documentos do Python - Tipos de Iteradores](https://docs.python.org/3/library/stdtypes.html#iterator-types)
|
||
|
||
Iteração é o processo de repetir programaticamente uma etapa um determinado número de vezes. Um programador pode fazer uso da iteração para executar a mesma operação em cada item de uma coleção de dados, por exemplo, imprimindo todos os itens de uma lista.
|
||
|
||
* Objetos podem implementar um `__iter__()` que retorna um objeto iterador para suportar a iteração.
|
||
|
||
* Objetos iteradores devem implementar:
|
||
|
||
* `__iter__()` : retorna o objeto iterador.
|
||
|
||
* `__next__()` : retorna o próximo objeto do container.
|
||
|
||
|
||
_objeto_ iterador _\= 'abc'. **iter** () print (_ objeto _iterador_ ) print (id ( _objeto_ iterador _)) print (id (_ objeto _iterador_ . **iter** ())) # Retorna o próprio iterador. print ( _objeto_ iterador _. **next** ()) # Retorna o primeiro objeto e avança o iterador. print (_ objeto _iterador_ . **next** ()) # Retorna o segundo objeto e avança o iterador. print ( _objeto_ iterador _. **next** ()) # Retorna o terceiro objeto e avança o iterador. print (_ objeto _iterador_ . **next** ()) # Aumenta a exceção StopIteration.
|
||
|
||
|
||
Saída:
|
||
```
|
||
<str_iterator object at 0x102e196a0>
|
||
4343305888
|
||
4343305888
|
||
a
|
||
b
|
||
c
|
||
---------------------------------------------------------------------------
|
||
StopIteration Traceback (most recent call last)
|
||
<ipython-input-1-d466eea8c1b0> in <module>()
|
||
6 print(iterator_object.__next__()) # Returns 2nd object and advances iterator.
|
||
7 print(iterator_object.__next__()) # Returns 3rd object and advances iterator.
|
||
----> 8 print(iterator_object.__next__()) # Raises StopIteration Exception.
|
||
|
||
StopIteration:
|
||
|
||
``` |