17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

448<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Utiliser les list comprehensions<br />

Depuis la version 2.4 de Python, les list comprehensions sont de loin la forme la plus<br />

concise et la plus rapide pour manipuler des séquences.<br />

Comparaison de rapidité<br />

# -*- coding: utf8 -*import<br />

time<br />

def transformee_classique(liste):<br />

res = []<br />

for x in liste:<br />

res.append(x + 1)<br />

return res<br />

def transformee_map(liste):<br />

return map(lambda x: x+1, liste)<br />

def transformee_lc(liste):<br />

return [x+1 for x in liste]<br />

def duree(fonction, n=10000000):<br />

debut = time.clock()<br />

fonction(range(n))<br />

fin = time.clock()<br />

return fin - debut<br />

print "Transformée classique: %f" % duree(transformee_classique)<br />

print "Transformée par map(): %f" % duree(transformee_map)<br />

print "Transformée par list-comprehension: %f" % duree(transformee_lc)<br />

[...]<br />

$ python2.4 benchlc.py<br />

Transformée classique: 6.010000<br />

Transformée par map(): 5.340000<br />

Transformée par list-comprehension: 2.600000<br />

$ python2.3 benchlc.py<br />

Transformée classique: 8.580000<br />

Transformée par map(): 6.770000<br />

Transformée par list-comprehension: 6.430000<br />

On remarque également que l’utilisation de map() n’est guère plus rapide que la<br />

forme éclatée pour la version 2.4, et devient de plus en plus obsolète.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!