[Python] list comprehension e .append()

Marco Beri marcoberi a gmail.com
Ven 22 Gen 2010 00:57:31 CET


2010/1/22 simone gabbriellini <simone.gabbriellini a gmail.com>

> Salve,
> una curiosità da neofita.
> esiste un modo per scrivere in modo più conciso e performante il seguente
> codice?
>
> a = sum([True for element in lista if sum(element.attribute)==0])
> b = sum([True for element in lista if sum(element.attribute)==1])
> c = sum([True for element in lista if sum(element.attribute)==2])
> d = sum([True for element in lista if sum(element.attribute)==3])
> e = sum([True for element in lista if sum(element.attribute)==4])
>
> in questo caso avevo pensato a:
>
> a=[]
> b=[]
> c=[]
> d=[]
> e=[]
> for element in lista:
>        if sum(element.attribute) ==0:
>                a.append(....)
>        elif ....
>        .....
>
> in questo modo si riduce il numero di volte che scorro "lista", giusto?
> ma è effettivamente il modo corretto di affrontare una struttura logica
> come questa?
>

Mi piace di piu` cosi`:

>>> d = dict((i, sum([1 for e in lista if sum(e.attribute) == i])) for i in
range(5))

In d hai un dizionario ma se vuoi a tutti i costi i risultati in a, b, c, d,
e dopo puoi:

>>> a, b, c, d, e = [d.get(i, 0) for i in range(5)]

Ciao.
Marco.

-- 
http://python.thinkcode.tv - Videocorso di Python
http://stacktrace.it - Aperiodico di resistenza informatica
http://beri.it - Blog di una testina di vitello
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: http://lists.python.it/pipermail/python/attachments/20100122/d904b992/attachment-0001.htm 


Maggiori informazioni sulla lista Python