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.

Funzione .copy() su una matrice esegue una copia per reference e non per valore

m
mel8 (1250 points)
1 12 19
in Es1 by (1.3k points)
recategorized by
Per lavorare al primo esercizio dell'homework 3 vorrei crearmi una copia della matrice ricavata dall'immagine in input (chiamata img) ed andare a cambiare li i valori dei colori qualora trovo un rettangolo vuoto all'interno, ma nel momento in cui vado a fare img2 = img.copy() realizza una copia per reference e non per valori... come posso risolvere questo problema?

Grazie in anticipo
386 views
closed

3 Answers

Best answer
K
Khalester (3310 points)
2 5 24
by (3.3k points)
selected by
Guarda se vuoi usare sempre la stessa immagine, ti consiglio invece di usare un copy, di riusare il load sulla stessa immagine (assegna quindi il load anche alla immagine-copia). Io ho fatto così e funziona uguale
m
mel8 (1250 points)
1 12 19
by (1.3k points)

Grazie mille, non ci avevo pensato

T
Tommaso (1480 points)
3 8 22
by (1.5k points)
Grazie anche io avevo avuto il tuo stesso problema... il copy() che crea una copia per reference e quindi lavoravo con l'immagine modificata. Provo ad utilizzare a questo punto il tuo metodo e vi faccio sapere se risolvo così :)
_andrea_ (45670 points)
13 42 297
by (45.7k points)
anche io faccio la stessa cosa ma non mi crea alcun problema. in che punto del programma questo diventa un problema per te?
m
mel8 (1250 points)
1 12 19
by (1.3k points)

Fin da subito. la copia della matrice è la mia quinta linea di codice e da li in poi diventa tutto un casino in quanto qunado trovo il primo rettangolo e coloro i bordi di verde, l'angolo in basso a destra coincide con l'angolo superiore sinistro di un altro rettangolo (la prima immagine dell'homework) e siccome quell'angolo è di un altro colore non mi trova il secondo rettangolo... si potrei risolvere dicendo che deve andare a cercare i due colori (bianco e vedere, il verde come conseguenza di aver colorato un rettangolo precedente) ma volevo risolvere in un modo legittimo questo problema del copy andando a lavorare su due matrici diverse... mi serve aiuto

_andrea_ (45670 points)
13 42 297
by (45.7k points)
ah allora io ho risolto colorando tutti i quadrati alla fine, se vuoi fare così
I
InnerAlbeiro (550 points)
1 2 7
by (550 points)
edited by
Per fare una copia di una matrice poi usare la deepcopy ma non sono permesse delle librerire quindi puoi fare questo copia = [row[:] for row in matrice] crea una copia di una matrice per valore