Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Problema passaggio di parametri tra oggetti dello stesso tipo

w
werry (350 points)
4 7 12
in Es2 by (350 points)
closed by
Buonasera, ho riscontrato un problema con il passaggio di parametri tra oggetti dello stesso tipo, nello specifico di una lista: creando un oggetto passandogli una lista che è attributo di un secondo oggetto dello stesso tipo, modificando tale attributo nel primo oggetto verrà modificato anche l'attributo nel secondo oggetto. Ho quindi provato a fare una passaggio intermedio, creando una copia indipendente, usando list(),della lista attributo del secondo oggetto e poi passando la copia come parametro del primo oggetto. Tuttavia anche in questo caso modificando la lista attributo del primo oggetto viene modificata anche la lista attributo del secondo oggetto. Qualcuno sa spiegarmi perché ciò avviene e come rendere indipendenti le due liste?
604 views
closed with the note: risolto

1 Answer

A
Angelo9787 (3670 points)
10 32 51
by (3.7k points)
Per passare una seconda lista basta che crei una copia facendo b = a[:], così come specificato nella documentazione ufficiale Python https://docs.python.org/3/faq/programming.html#how-do-i-copy-an-object-in-python
Spero di esserti stato d'aiuto :)
w
werry (350 points)
4 7 12
by (350 points)
Il problema è che gia lo faccio, eppure la lista originale, quella attributo del secondo oggetto, viene comunque modificata
w
werry (350 points)
4 7 12
by (350 points)
Ho risolto il problema: essendo una lista di liste io facevo solo una copia superficiale, quindi la copia era sostanzialmente inutile, visto che andavo a lavorare sulle liste interne
A
Angelo9787 (3670 points)
10 32 51
by (3.7k points)
Quindi passavi tipo lista1 = lista2?
w
werry (350 points)
4 7 12
by (350 points)
No facevo lista1=list (lista2) solo che poi andavo a lavorare nelle liste interne, che non venivano duplicate