3 svar
193 visningar
seafood behöver inte mer hjälp
seafood 2 – Fd. Medlem
Postad: 8 feb 2020 13:36

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.

FreeCodeParty 7 – Fd. Medlem
Postad: 8 feb 2020 13:59 Redigerad: 8 feb 2020 14:03

Ä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())

Laguna Online 30484
Postad: 8 feb 2020 14:05

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.

seafood 2 – Fd. Medlem
Postad: 8 feb 2020 14:59
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

Svara
Close