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 #1.90100002289

st = time()
for value in filter(lambda x: x > 2, values):
    pass
print time() - st #2.96499991417

st = time()
for value in itertools.ifilter(lambda x: x > 2, values):
    pass
print time() - st #3.06299996376

st = time()
relevant_values = (value for value in values if value > 2)
for value in relevant_values:
    pass
print time() - st #1.79600000381
