Dubbellistor.
Hej!
Jag håller på med ett projekt i skolan, och under projektets gång har jag fastnat.
Jag vill göra en loop som skapar dubbla listor, för att jag sedan ska kunna ta bort en variabel i den ena listan, och en annan variabel i den andra listan. Men om jag tar bort en variabel i den ena listan tas den också bort i den andra listan. Går detta att fixa på något sätt?
Jag kan få det att fungera om jag gör en dubbellista manuellt, men om jag skapar den i en loop, blir det detta problem.
Är ingen expert på python men jag skulle gissa att när du lägger till siffror i dubbel i din for loop så lägger den in 2 st referenser som pekar på samma objekt. Så när du då tar bort siffran 2 ur ena arrayen så försvinner den ur objektet som bägge listerna pekar på.
Testa istället att göra en kopia av siffror innan du lägger till den i din dubbel-array. Det finns en funktion som heter copy() som du kan använda.
Typ såhär:
dubbel.append(siffror.copy())
Den där listan 'siffror' blir första och andra element i 'dubbel'. Det är samma lista, så när du ändrar i den så syns det vare sig du sedan tar fram den genom dubbel[0] eller dubbel[1].
Det du vill göra är nog att kopiera listan 'siffror'. Ett sätt att få en kopia av en lista är siffror[:] så om du ändrar till dubbel.append(siffror[:]) ska det fungera. (Du kopierar listan i onödan första gången då, men det gör inget.)
Ett annat sätt är siffror.copy(). De gör inte riktigt samma sak, men båda fungerar här.
Laguna skrev:Den där listan 'siffror' blir första och andra element i 'dubbel'. Det är samma lista, så när du ändrar i den så syns det vare sig du sedan tar fram den genom dubbel[0] eller dubbel[1].
Det du vill göra är nog att kopiera listan 'siffror'. Ett sätt att få en kopia av en lista är siffror[:] så om du ändrar till dubbel.append(siffror[:]) ska det fungera. (Du kopierar listan i onödan första gången då, men det gör inget.)
Ett annat sätt är siffror.copy(). De gör inte riktigt samma sak, men båda fungerar här.
Tack så jättemycket siffror[:] fungerade utmärkt! :D