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 matrice a funzione

_andrea_ (45670 points)
13 42 297
in Es1 by (45.7k points)
sto provando a scrivere una funzione che prende in input una matrice composta come lista di liste e modifica determinati elementi della matrice, per esempio modifica la prima riga, cioè matrice[0] nelle posizioni 1,2,3 quindi m[0][1], m[0][2], m[0][3], il problema è che mettendo questa cosa in un for come in questo esempio (ovviamente nel programma non è così semplice ma la parte del for presa singolarmente ha questa forma):

for i in range(1,4):

    matrice[0][i]=qualcosa

passando una matrice con due righe, ottengo la matrice modificata nelle posizioni 1,2,3 ma in entrambe le righe, cioè sia m[0][1] che m[1][1] e così via. come mai? eppure provando a definire una funzione identica nella console, mi modifica solo la prima riga, proprio come dovrebbe
460 views
closed

1 Answer

Best answer
a.capobianco1 (16770 points)
14 54 165
by (16.8k points)
selected by
Non è che per ottenere la matrice hai moltiplicato la lista con indice 0 per n occorrenze?
In quel caso la propagazione sarebbe dovuta al fatto che tutte le liste sarebbero copie della prima... X differenziale devi crearlo con un doppio ciclo for
_andrea_ (45670 points)
13 42 297
by (45.7k points)
Controllo subito
_andrea_ (45670 points)
13 42 297
by (45.7k points)
Hai ragione per crearla ho usato una list comprehension che usava una lista già creata come argomemto, quindi tutte le righe nella matrice corrispondevano alla stessa lista
Xriuk (13590 points)
8 24 116
by (13.6k points)

[[I]*N for _ in range(M)] genera una matrice con M righe e N colonne contenenti elementi uguali a I (for _ indica l’assenza di variabile, cioè non viene utilizzata)

Con questo codice crei una matrice usando un solo for

andrea.sterbini (208020 points)
756 1270 2377
by (208k points)

La creazione di matrici col prodotto di una riga per N è un bell'esempio di come si può creare tante referenze allo stesso oggetto.

Ci sono cascato anche io