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: 
 | ||
| 
 | ||
| ``` |