[Python] l'amore per il pitone

Lorenzo Sutton lorenzofsutton a gmail.com
Mar 17 Set 2013 22:56:41 CEST


On 17/09/13 19:32, Piergiuliano Bossi wrote:

[...]
> Ok, provo con un'altra: qual e' il modo migliore in python di contare
> tutti gli elementi di una lista che soddisfano un criterio?
> 2 esempi:
>
> 1) contare tutti gli elementi piu' grandi di 5
> 2) contare tutti gli elementi uguali al massimo
> A me viene cosi':
>
>  >>> a = [2, -4, 27, 44, 13, 0]
>  >>> len(x for x in a if x > 5)
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> TypeError: object of type 'generator' has no len()
>  >>> len([x for x in a if x > 5])
> 3
>  >>> list_max = max(a)
>  >>> len([x for x in a if x == list_max])
> 1
>  >>> len([x for x in a if x == max(a)]) # anche cosi' insomma
> 1
>

Domanda, forse naive. A parte la soddisfazione/divertimento di costruire 
dei one-liner qual è il vero vantaggio di tale super-sinteticità? perché 
non scrivere il codice "per esteso"? Esempio:

 >>> number_list = [2, -4, 27, 44, 13, 0]
 >>> up_limit = 5
 >>> counter = 0
 >>> for i in number_list:
...     if i > up_limit:
...         counter += 1
...
 >>> counter
3

Inserito in un contesto più complesso, così non un po' più chiaro?

Ciao,
Lorenzo.


Maggiori informazioni sulla lista Python