Du tror append() legger inn elementene, ikke lista

Handler om: Liste

`a.append(b)` legger `b` inn som ETT element — er `b` en liste, får du en liste inni lista. Skal elementene inn hver for seg, trenger du `extend(b)`. Forskjellen viser seg først når du teller: lengden økte med 1 i stedet for med antallet.

Eksempel

Du slår sammen [1, 2] og [3, 4] og får [1, 2, [3, 4]] med lengde 3.

Slik tenker du riktig om det

append legger én ting i sekken, extend tømmer en pose oppi. Spør deg selv: skal posen inn, eller innholdet?

Slik ser det ut i kode

Slik gikk det galt

flat = []
for bit in deler:
    flat.append(bit)      # hele lista som ett element

Slik fikser du det

flat = []
for bit in deler:
    flat.extend(bit)      # elementene hver for seg

Les om dette i boka

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