from time import time
import itertools
values = xrange(10000000)
st = time()
for value in (value for value in values if value > 2):
pass
print time() - st #3.91020894051
st = time()
for value in filter(lambda x: x > 2, values):
pass
print time() - st #5.53530097008
st = time()
for value in itertools.ifilter(lambda x: x > 2, values):
pass
print time() - st #5.0817360878