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.
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a