This is rather the inverse of What can you use Python generator functions for?: python generators, generator expressions, and the itertools module are some of m
You should never favor zip over izip, range over xrange, or list comprehensions over generator comprehensions. In Python 3.0 range has xrange-like semantics and zip has izip-like semantics.
List comprehensions are actually clearer like list(frob(x) for x in foo) for those times you need an actual list.