40 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			40 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: Python Iterators | ||
|  | --- | ||
|  | Python supports a concept of iteration over containers. This is implemented using two distinct methods; these are used to allow user-defined classes to support iteration. | ||
|  | 
 | ||
|  | <a href='https://docs.python.org/3/library/stdtypes.html#iterator-types' target='_blank' rel='nofollow'>Python Docs - Iterator Types</a> | ||
|  | 
 | ||
|  | Iteration is the process of programatically repeating a step a given number of times.  A programmer can make use of iteration to perform the same operation on every item in a collection of data, for example printing out every item in a list. | ||
|  | 
 | ||
|  | *   Objects can implement a `__iter__()` method that returns an iterator object to support iteration. | ||
|  | *   Iterator objects must implement: | ||
|  |     *   `__iter__()`: returns the iterator object. | ||
|  | 
 | ||
|  |     *   `__next__()`: returns the next object of the container. | ||
|  | 
 | ||
|  |     iterator_object = 'abc'.__iter__() | ||
|  |     print(iterator_object) | ||
|  |     print(id(iterator_object)) | ||
|  |     print(id(iterator_object.__iter__())) # Returns the iterator itself. | ||
|  |     print(iterator_object.__next__())     # Returns 1st object and advances iterator. | ||
|  |     print(iterator_object.__next__())     # Returns 2nd object and advances iterator. | ||
|  |     print(iterator_object.__next__())     # Returns 3rd object and advances iterator. | ||
|  |     print(iterator_object.__next__())     # Raises StopIteration Exception. | ||
|  | 
 | ||
|  | Output : | ||
|  | 
 | ||
|  |     <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: |