[Python] list comprehension
Ciao, usa semplice domanda sulle list comprehension Faccio l'esempio con questo semplice codice: lista = [0,1,2,3,4,5,6,7,8,9,10,12,14,16] s = [n for n in lista if n%2 == 0][2] print(s) In questo caso l'interprete (nel mio caso 3.8.6) è "intelligente" da fermarsi all'elemento con indice due nella comprehension o verifica comunque la condizione su tutta la lista ? Grazie -- Per favore non inviatemi allegati in formato MS Office. Utilizza alternativamente documenti in formato OpenDocument. GPG Fingerprint: 0x56029AD2F77B4C5ED3DB2394BB87A38F146F0DD1 ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] list comprehension
On Fri, 4 Dec 2020 at 10:45, Walter Valenti wrote: > Ciao, > usa semplice domanda sulle list comprehension > Faccio l'esempio con questo semplice codice: > > lista = [0,1,2,3,4,5,6,7,8,9,10,12,14,16] > s = [n for n in lista if n%2 == 0][2] > print(s) > > In questo caso l'interprete (nel mio caso 3.8.6) è "intelligente" da > fermarsi all'elemento con indice due > nella comprehension o verifica comunque la condizione su tutta la lista ? > Testa la condizione su tutta la lista. Puoi verificarlo così: >>> lista = [0,1,2,3,4,5,6,7,8,9,10,12,14,16] >>> def pari(n): ... print(n) ... return n % 2 == 0 ... >>> s = [n for n in lista if pari(n)][2] 0 1 2 3 4 5 6 7 8 9 10 12 14 16 >>> print(s) 4 Ciao. Marco. ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] list comprehension
On Fri, 4 Dec 2020 at 10:45, Walter Valenti wrote: > Ciao, > usa semplice domanda sulle list comprehension > Faccio l'esempio con questo semplice codice: > > lista = [0,1,2,3,4,5,6,7,8,9,10,12,14,16] > s = [n for n in lista if n%2 == 0][2] > print(s) > > > In questo caso l'interprete (nel mio caso 3.8.6) è "intelligente" da > fermarsi all'elemento con indice due > nella comprehension o verifica comunque la condizione su tutta la lista ? > No cosi' assegna a s il terzo (le liste partono con indice 0) elemento della lista generata dalla list comprehension. Carlos -- EZLN ... Para Todos Todo ... Nada para nosotros ___ Python mailing list Python@lists.python.it https://lists.python.it/mailman/listinfo/python
Re: [Python] list comprehension e .append()
ciao, così risolvo tutto in un paio di righe, davvero pythonico... grazie mille, simone Il giorno 22/gen/2010, alle ore 00.57, Marco Beri ha scritto: 2010/1/22 simone gabbriellini simone.gabbriell...@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 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
[Python] list comprehension e .append()
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? molte grazie, simone ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] list comprehension e .append()
2010/1/22 simone gabbriellini simone.gabbriell...@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 ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python