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