[Python] Sintassi sconosciuta...

Federico Cerchiari federicocerchiari a gmail.com
Mar 16 Ott 2018 14:51:10 CEST


Ciao,
la sintassi è la stessa dell'unpacking, ma al contrario si tratta di
packing... io generalmente uso quella sintassi nei cicli for quando mi
capita di iterare su tuple:

list_of_coordinates = [(2, 4, 5), (2, 4, 6), (2, 5, 7), (2, 5, 8)]
for (x, y, z) in list_of_coordinates:
            print(x + 1)

l'alternativa, secondo me,  è più illeggibile:
list_of_coordinates = [(2, 4, 5), (2, 4, 6), (2, 5, 7), (2, 5, 8)]
for coord in list_of_coordinates:
            print(coord[0] + 1)

Federico


Il giorno mar 16 ott 2018 alle ore 14:24 Davide Brunato <brunato a sissa.it>
ha scritto:

> On 10/16/18 1:06 PM, Alessandro Dentella wrote:
> > mi sono accorto dopo tanti anni di uso di Python di non avere idea di
> > questa sintassi:
> >
> >   [tmp_loc] = glob.glob(os.path.join(tmp_dest, '*'))
> >
> > che trovate usata qui:
> >
> >   #L1740
> >
> > Che cosa fa? che senso ha usarla quando mi vengono in mente vari altri
> > modi di ottenere quello che (forse, penso) faccia.
> >
> > Soprattutto, quella riga st creandomi problemi...
> >
> > Chi mi sa illuminare?
> >
> Può servire ad estrarre da un iterabile/lista/tupla una sequenza di
> valori, generando un errore in caso di discordanza nel numero di
> elementi o se l'operando a destra non è un iterabile:
>
>   >>> [a] = 1
>   Traceback (most recent call last):
>     File "<stdin>", line 1, in <module>
>   TypeError: 'int' object is not iterable
>   >>> [a] = 1,
>   >>> a
>   1
>   >>> [a] = 1, 2
>   Traceback (most recent call last):
>     File "<stdin>", line 1, in <module>
>   ValueError: too many values to unpack
>   >>> [a] = []
>   Traceback (most recent call last):
>     File "<stdin>", line 1, in <module>
>   ValueError: need more than 0 values to unpack
>
> Credo sia equivalente alla sintassi con parentesi tonde, o a quella con
> virgole, usata solitamente per il doppio assegnamento:
>
>   >>> a, b = [4, 5]
>   >>> a, b
>   (4, 5)
>   >>> a, = [6]
>   >>> a
>   6
>
> Ciao
>
> Davide
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> https://lists.python.it/mailman/listinfo/python
>
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20181016/c691b01f/attachment-0001.html>


Maggiori informazioni sulla lista Python