[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