[Python] l'amore per il pitone

Pietro peter.zamb a gmail.com
Mar 17 Set 2013 18:56:13 CEST


Ciao,

2013/9/17 Piergiuliano Bossi <pgbossi a gmail.com>:
> Ad esempio, data una lista di interi, per estrarre quelli piu' grandi di 5:
>
>>>> a = [2, -4, 27, 44, 13, 0]
>>>> filter(lambda x: x > 5, a)
> [27, 44, 13]
>>>> [x for x in a if x > 5]
> [27, 44, 13]
>>>>
>
> Immagino che tu vada diretto con la seconda, mentre a me viene naturale la
> prima (la trovo piu' "intention revealing", dice chiaramente che sto
> filtrando la lista).

Personalmente avrei optato per la seconda... :-)
Però mi incuriosiva sapere quele implementazione è la più veloce/efficiente...

In[1]: import random
In[2]: a = [random.randint(0,100) for _ in range(100000)]
In[3]: %timeit filter(lambda x: x > 5, a)
100 loops, best of 3: 9.14 ms per loop
In [4]: %timeit [x for x in a if x > 5]
100 loops, best of 3: 5.77 ms per loop

e la seconda sembra essere la "migliore"... per quello che può valere...

Pietro


Maggiori informazioni sulla lista Python