An itorator is a thing like an array, that you can go over one bit at a time in order, except the thing doesn't necesarily have to exist.
# a generator
def counter(n=0):
while True:
n += 1
if n > 100:
return
yield n
c = counter(5)
for x in c: print x
# 6
# 7
# ...
# 100
Sequences (lists, strings, tuples), file objects, dictionaries, generators, are all iterables. It is easy to make an object behave as an iterator by defining __iter__ and next methods.
for letter in 'elephant':
print letter.join('loaf')
#leoeaef
#llolalf
#leoeaef
They provide a nifty interface between different seuqences, and can save al ot of memory if the whole sequence isn't all needed at once.