On 2/9/15 2:14 PM, Charles Hixson wrote:
I'm trying to write a correct iteration over a doubly indexed container, and what I've got so far is: def __next__ (self): for row in range(self._rows): for col in range(self._cols): if self._grid[row][col]: yield self._grid[row][col] #end if #end for col #end for row raise StopIterationWhat bothers me is that it doesn't look like it would continue to raise StopIteration if it were called again, which is what https://docs.python.org/3/library/stdtypes.html#iterator.__next__ says is correct. How should this be fixed?
You are using yield, which means __next__ is a generator. As such, you don't have to explicitly raise StopIteration at all. Just remove that statement, and you should be fine.
Also, look into how you are posting, the code is nearly mangled. :( -- Ned Batchelder, http://nedbatchelder.com -- https://mail.python.org/mailman/listinfo/python-list
