Python: Listenverständnis vs. Karte

Darauf verweisenPython List Comprehension Vs. Karte Frage, kann jemand erklären, warum List Comprehensions bessere Ergebnisse liefertmap wenn das Listenverständnis keine Funktion aufruft, auch wenn in der keine Lambda - Funktion vorhanden istmap gibt aber das schlechteste ergebnis beim aufruf einer funktion?

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)

Ergebnisse:

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage