[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