[Python] list comprehension

2020-12-04 Per discussione Walter Valenti
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

2020-12-04 Per discussione Marco Beri
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

2020-12-04 Per discussione Carlos Catucci
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()

2010-01-22 Per discussione simone gabbriellini
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()

2010-01-21 Per discussione simone gabbriellini
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-01-21 Per discussione Marco Beri
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