I am studying Alex Marteli\'s Python in a Nutshell and the book suggests that any object that has a next() method is (or at least can be used as) an ite
List is not iterator but list contains an iterator object __iter__ so when you try to use for loop on any list, for loop calls __iter__ method and gets the iterator object and then it uses next() method of list.
x = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
it = x.__iter__()
Now it contains iterator object of x which you can use as it.next() until StopIteration exception is thrown