Ah, interesting. I think it goes until it encounters IndexError.
>>> class X:
...     def __init__(self):
...             self.arr = [1, 2, 3, 4, 5]
...             self.arr2 = [1, 2, 3]
...     def __getitem__(self, idx):
...             print('getting: ', idx)
...             return self.arr[idx], self.arr2[idx]
...     def __len__(self):
...             return 1
...
>>> x = X()
>>> list(x)
getting:  0
getting:  1
getting:  2
getting:  3
[(1, 1), (2, 2), (3, 3)]