--- id: practical-python-6.1 source_exercise_id: "6.1" title: "Iteration Illustrated" section: "6.1 Iteration Protocol" source_path: "06_Generators/01_Iteration_protocol.md" source_repo: "https://github.com/dabeaz-course/practical-python" source_commit: "93dca856b41c61a0a0f85ae334116e4c125629ea" student_visible_solution: false has_private_solution: false skip: false --- # Exercise 6.1: Iteration Illustrated > Source: Practical Python Programming, `06_Generators/01_Iteration_protocol.md`. ### Exercise 6.1: Iteration Illustrated Create the following list: ```python a = [1,9,4,25,16] ``` Manually iterate over this list. Call `__iter__()` to get an iterator and call the `__next__()` method to obtain successive elements. ```python >>> i = a.__iter__() >>> i >>> i.__next__() 1 >>> i.__next__() 9 >>> i.__next__() 4 >>> i.__next__() 25 >>> i.__next__() 16 >>> i.__next__() Traceback (most recent call last): File "", line 1, in StopIteration >>> ``` The `next()` built-in function is a shortcut for calling the `__next__()` method of an iterator. Try using it on a file: ```python >>> f = open('Data/portfolio.csv') >>> f.__iter__() # Note: This returns the file itself <_io.TextIOWrapper name='Data/portfolio.csv' mode='r' encoding='UTF-8'> >>> next(f) 'name,shares,price\n' >>> next(f) '"AA",100,32.20\n' >>> next(f) '"IBM",50,91.10\n' >>> ``` Keep calling `next(f)` until you reach the end of the file. Watch what happens. ## 关联来源 - [[summaries/01_Iteration_protocol]]