Du er ikke logget inn. Så lenge du ikke er logget inn går du glipp av muligheten for å holde styr på din egen progresjon.

Logg inn

Valgte tags:

Filtrering:

Skriv ut:

Lister 3: å fjerne elementer

Her skal vi se på to måter å fjerne et element fra ei liste: .remove() og .pop()

Remove brukes ved at man spesifiserer selve elementet man vil fjerne. Remove fjerner så den første forekomsten av elementet. Hvis elementet ikke finnes i lista og man prøver å fjerne det får man en feilmelding. Vi kan bruke den boolske operatoren in for å sjekke om elementet finnes.

Eksempel

liste =    ["en","to","tre","fire"]
print(liste)
liste.remove("fem")

Utskrift med feilmelding:

['en', 'to', 'tre', 'fire']
Traceback (most recent call last):
  File "listetest.py", line 5, in <module>
    liste.remove("fem")
ValueError: list.remove(x): x not in list

(listetest.py er navnet på fila.)
Men hvis vi sjekker med in:

liste =    ["en","to","tre","fire"]
print(liste)
if "fem" in liste:
    liste.remove("fem")
else:
    liste.remove("fire")
print(liste)

Da får vi følgende utskrift:

['en', 'to', 'tre', 'fire']
['en', 'to', 'tre']

Når vi bruker .pop() kan vi velge å spesifisere en indeks, eller la være å spesifisere. Hvis vi ikke spesifiserer noe så fjerner den alltid det siste elementet i lista.

liste =    ["en","to","tre","fire","fem"]
liste.pop()
print(liste)
liste.pop(1)
print(liste)

Utskrift:

["en", "to", "tre", "fire"]
["en", "tre", "fire"]

Legg merke til at liste.pop(1) fjerner elementet "to".

Oppgaver

a) Fjern elementene "balkong" og "drivhus" fra lista under ved å bruke .remove(), og skriv ut den resulterende lista til terminalen.

liste1 = ["balkong","veranda","altan","terasse","drivhus"]

b) Fjern elementene "balkong" og "drivhus" fra lista under ved å bruke .pop(), og skriv ut den resulterende lista til terminalen. Tips: tenk på hva som skjer når du har fjernet det ene elementet.

liste1 = ["balkong","veranda","altan","terasse","drivhus"]

c) Lag et program der brukeren skriver inn en setning. Ta setningen og del den opp ved å bruke .split(). Brukeren skal så skrive inn et ord som skal fjernes. Hvis ordet finnes i lista så skal det fjernes og lista skrives ut til terminalen, hvis ikke skal brukeren få ei melding om at ordet ikke finnes i lista.

Vis løsningsforslag

a)
Med .remove() trenger vi altså bare å skrive elementene vi vil fjerne.

liste1 = ["balkong","veranda","altan","terasse","drivhus"]

liste1.remove("balkong")
liste1.remove("drivhus")
print(liste1)

Utskrift:

['veranda', 'altan', 'terasse']

b)
Indeksene vi velger avhenger av hvilken rekkefølge elementene fjernes i. Dette gjelder kun .pop(), ikke remove. Hvis vi fjerner "balkong" først, vil det kun være fire elementer i lista, og den siste indeksen er derfor 3. Hvis vi fjerner "drivhus" først så er det fortsatt fem elementer i lista, så indeksen til "drivhus" er 4.

liste1 = ["balkong","veranda","altan","terasse","drivhus"]

liste1.pop(0)
liste1.pop(3)

print(liste1)

Eller:

liste1 = ["balkong","veranda","altan","terasse","drivhus"]

liste1.pop(4)
liste1.pop(0)

print(liste1)

Utskriften blir lik i begge tilfeller:

['veranda', 'altan', 'terasse']

c)
Det er mange måter å løse oppgaven på. Dette er et forslag.

setning = input("Skriv en setning med noen ord.\n")
setning_splitta = setning.split()
ord_fjerne = input("Hvilket ord vil du fjerne? Skriv ett ord.\n")
if ord_fjerne in setning_splitta:
    setning_splitta.remove(ord_fjerne)
    print("Setning uten",ord_fjerne,":",setning_splitta)
else:
    print("Ordet",ord_fjerne,"finnes ikke i lista. Ingen endring gjort.")

Utskrift med ord som finnes i lista:

>>Skriv en setning med noen ord.
Det sitter en fugl i treet .
>>Hvilket ord vil du fjerne? Skriv ett ord.
fugl
>>>Setning uten fugl : ['Det', 'sitter', 'en', 'i', 'treet', '.']

Utskrift med ord som ikke finnes i lista:

>>>Skriv en setning med noen ord.
Det sitter en fugl i treet .
>>>Hvilket ord vil du fjerne? Skriv ett ord.
ost
>>>Ordet ost finnes ikke i lista. Ingen endring gjort.