Python: Enumeración de listas vs. mapa

Refiriéndose a estoLista de Python Comprensión Vs. Mapa pregunta, ¿alguien puede explicar por qué List Comprehensions da mejores resultados sobremap cuando la comprensión de lista no llama a una función, incluso cuando no hay una función lambda en elmap ¿Pero da el peor resultado al llamar a una función?

import timeit

print timeit.Timer('''[i**2 for i in xrange(100)]''').timeit(number = 100000)

print timeit.Timer('''map(lambda i: i**2, xrange(100))''').timeit(number = 100000)

print timeit.Timer(setup="""def my_pow(i):
    return i**2
""",stmt="""map(my_pow, xrange(100))""").timeit(number = 100000)

print timeit.Timer(setup="""def my_pow(i):
    return i**2
""",stmt='''[my_pow(i) for i in xrange(100)]''').timeit(number = 100000)

resultados:

1.03697046805 <-- list comprehension without function call
1.96599485313 <-- map with lambda function
1.92951520483 <-- map with function call
2.23419570042 <-- list comprehension with function call

Respuestas a la pregunta(1)

Su respuesta a la pregunta