Du tror b = a lager en kopi av lista

Handler om: Liste

b = a kopierer ikke lista — det limer en ny navnelapp på den SAMME lista. Endringer gjennom det ene navnet (b.append, b[0] = ...) synes gjennom det andre. En ekte kopi lager du med b = list(a). Fella er lumsk fordi koden ser riktig ut og feilen først synes et helt annet sted.

Eksempel

I Game of Life skriver du ny = self.celler i stedet for å bygge et nytt rutenett — da skriver du rett i det gamle mens du teller naboer, og generasjonen blir feil.

Slik tenker du riktig om det

Tenk navnelapp, ikke boks: b = a limer en lapp til på samme liste. Spør deg selv «hvor mange LISTER finnes det her?» — tilordning lager aldri en ny. Trenger du en ny, si det eksplisitt: list(a).

naviger Enter åpne ShiftEnter ny fane Esc lukk
Velg tema
Skala