Re: [Python] un dubbio sulle liste

2020-05-23 Per discussione Giuliano Curti
On 5/24/20, Luigi Curzi  wrote:
> Ciao,

ciao Luigi,

> Il sab 23 mag 2020, 23:41 Giuliano Curti  ha scritto:
>
>> On 5/23/20, Marco Beri  wrote:
>> > On Sat, 23 May 2020, 23:13 Giuliano Curti, 
>> > wrote:
>> >
>> >>
>> >> 2) ...
>> >>
>> >
>> > Perché sono la stessa lista.
>>
>> è quello che immaginavo, però logica vorrebbe (la mia che ho capito
>> essere diversa da quella del sistema :-) ) che allora anche V=[0]*3
>> sia la ripetizione della stessa variabile e invece no;
>>
>
> In python esistono oggetti immutabili e mutabili: gli interi (o le stringhe
> o le tuple) sono immutabili, quindi non puoi cambiarne il valore una volta
> creati, questo per dire che quelli lì sono 3 0 diversi, ..

sì, le mutabilità ed immutabilità le conoscevo; quello che mi inganna
è che sintassi apparentemente uguali generano due cose diverse, ma
probabilmente sono "uguali" perchè mi sfugge qualcosa;

> .
> Qui la documentazione https://docs.python.it/html/ref/objects.html
> Qui trovi la documentazione ad un modulo utile
> https://docs.python.org/3.8/library/copy.html

cercherò di approfondirlo qui, grazie, ciao,
giuliano
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] un dubbio sulle liste

2020-05-23 Per discussione Luigi Curzi
Ciao,

Il sab 23 mag 2020, 23:41 Giuliano Curti  ha scritto:

> On 5/23/20, Marco Beri  wrote:
> > On Sat, 23 May 2020, 23:13 Giuliano Curti,  wrote:
> >
> >>
> >> 2) ...
> >>
> >
> > Perché sono la stessa lista.
>
> è quello che immaginavo, però logica vorrebbe (la mia che ho capito
> essere diversa da quella del sistema :-) ) che allora anche V=[0]*3
> sia la ripetizione della stessa variabile e invece no;
>

In python esistono oggetti immutabili e mutabili: gli interi (o le stringhe
o le tuple) sono immutabili, quindi non puoi cambiarne il valore una volta
creati, questo per dire che quelli lì sono 3 0 diversi, quando ne modifichi
uno stai cestinando l'oggetto e ne stai creando uno nuovo (cioè con id
diverso). Le liste invece sono mutabili quindi con quel *2 successivo stai
creando sì due liste ma che fanno riferimento allo stesso oggetto (stesso
id); ne consegue che modificando un elemento contenuto in una lista in
realtà stai modificando l'oggetto referenziato e quindi tutte le sue
referenze e quindi entrambe le liste.

Altri oggetti mutabili sono i dizionari ad esempio.

Spero di essere stato chiaro.

Qui la documentazione https://docs.python.it/html/ref/objects.html
Qui trovi la documentazione ad un modulo utile
https://docs.python.org/3.8/library/copy.html
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] un dubbio sulle liste

2020-05-23 Per discussione Giuliano Curti
On 5/23/20, Marco Beri  wrote:
> On Sat, 23 May 2020, 23:13 Giuliano Curti,  wrote:
>
>>
>> 2) ...
>>
>
> Perché sono la stessa lista.

è quello che immaginavo, però logica vorrebbe (la mia che ho capito
essere diversa da quella del sistema :-) ) che allora anche V=[0]*3
sia la ripetizione della stessa variabile e invece no; è appunto
questa differenza che mi torna strana (per chiara ipnoranza,
ovviamente :-)

> Prova con:
>
> M = [[0]*3 for n in range (2)]

questo lo faccio di sicuro;


> Ciao.
> Marco.

grazie della fulminante risposta, ciao,
giuliano
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] un dubbio sulle liste

2020-05-23 Per discussione Marco Beri
On Sat, 23 May 2020, 23:13 Giuliano Curti,  wrote:

>
> 2) matrici (emulate con lista di liste), ad es. una matrice 2x3
>M = [[0]*3]*2
>M = [[0,0,0],[0,0,0]]
>quando faccio M[0][1] = 5 mi trovo con M -> [[0, 5, 0], [0, 5, 0]]
> cioè non solo
>M[0][1] = 5, ma anche M[1][1] = 5;
>lo stesso si ripete ovviamente con M[0][0] e con M[0][2];
>sembrerebbe cioè che gli elementi M[*][c] rimangano collegati;
>

Perché sono la stessa lista.

Prova con:

M = [[0]*3 for n in range (2)]

Ciao.
Marco.
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] un dubbio sulle liste

2020-05-23 Per discussione Giuliano Curti
Ciao a tutti,

mi permetto fare una richiesta qui: mi sfugge qualcosa nella gestione
delle liste; non pretendo la soluzione pronta; una indicazione ad un
testo o ad una sua porzione pertinente sarà più che sufficiente :-)

sto operando con vettori e matrici con una asimmetria che non mi torna chiara:

1) vettori: qui il discorso è semplice, ad es. un vettore riga di 3 elementi
   (i vettori colonna rientrano nel caso sotto)
   V = [0]*3
   V -> [0,0,0]
   V[1] = 5
   V -> [0,5,0]
   tutto perfetto;

2) matrici (emulate con lista di liste), ad es. una matrice 2x3
   M = [[0]*3]*2
   M = [[0,0,0],[0,0,0]]
   quando faccio M[0][1] = 5 mi trovo con M -> [[0, 5, 0], [0, 5, 0]]
cioè non solo
   M[0][1] = 5, ma anche M[1][1] = 5;
   lo stesso si ripete ovviamente con M[0][0] e con M[0][2];
   sembrerebbe cioè che gli elementi M[*][c] rimangano collegati;

attualmente uso la modalità
M = []
for i in range (r):
tmp = []
for k in range(c):
tmp.append(0)
M.append(tmp)
M -> [[0,0,0],[0,0,0]]
che mi consente quello che voglio, ad es. M[0][1] = 5 fornisce M ->
[[0,5,0],[0,0,0]]
ma c'è evidentemente qualcosa che mi sfugge e mi piacerebbe capire :-)

grazie, saluti,
giuliano
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python