Hvis du vil fjerne et element fra en liste (array) af typen list i Python, skal du bruge list-metoderne clear(), pop() og remove(). Du kan også angive listens position og rækkevidde ved hjælp af index eller slice og derefter slette den ved hjælp af del-anvisningen.
Her findes følgende oplysninger.
- Fjern alle elementer:
clear()
- Sletter et element på den angivne position og får dets værdi.:
pop()
- Søger efter elementer med den angivne værdi og fjerner det første element.:
remove()
- Sletning ved angivelse af position og område i indeksskive:
del
- Slet flere elementer, der opfylder kriterierne, i en batch.:liste optagelse indikation
Bemærk, at lister kan lagre data af forskellige typer og er helt forskellige fra arrays. Brug array (standardbiblioteket) eller NumPy, når du ønsker at håndtere arrays til processer, der kræver hukommelsesstørrelse eller hukommelsesadresse, eller til numerisk beregning af store data.
- Fjern alle elementer: clear()
- Sletter et element på den angivne position og får dets værdi.: pop()
- Søger efter elementer med den angivne værdi og fjerner det første element.: remove()
- Sletning ved angivelse af position og område i indeksskive: del
- Slet flere elementer, der opfylder kriterierne, i en batch.: liste optagelse indikation
Fjern alle elementer: clear()
I listens metode clear() fjernes alle elementer, hvilket resulterer i en tom liste.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Sletter et element på den angivne position og får dets værdi.: pop()
Metoden pop() i en liste kan bruges til at slette et element på en bestemt position og hente værdien af det pågældende element.
Det første (indledende) tal er 0.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(0))
# 0
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l.pop(3))
# 4
print(l)
# [1, 2, 3, 5, 6, 7, 8, 9]
En negativ værdi kan også bruges til at angive positionen fra slutningen (sidst). Slutningen (sidst) er -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Hvis argumentet er udeladt, og der ikke er angivet nogen position, slettes det sidste (sidste) element.
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Hvis du angiver en position, der ikke findes, vil det resultere i en fejl.
# print(l.pop(100))
# IndexError: pop index out of range
Bemærk, at pop(0), som fjerner det første element, kræver følgende omkostninger og er ikke en effektiv operation. Se følgende side på den officielle wiki for beregningskompleksiteten for forskellige operationer på lister.O(n)
O(1)
Deque-typen findes i standardbibliotekets collections-modul som en type, der sletter elementer øverst til denne pris. Hvis du f.eks. ønsker at behandle data som en kø (FIFO), er det mere effektivt at bruge deque.
Søger efter elementer med den angivne værdi og fjerner det første element.: remove()
Listemetoden remove() kan bruges til at søge efter elementer med den samme værdi som angivet og fjerne det første element.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Hvis listen indeholder mere end ét element, der svarer til den angivne værdi, fjernes kun det første element.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Hvis der angives en ikke-eksisterende værdi, opstår der en fejl.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Sletning ved angivelse af position og område i indeksskive: del
Du kan også bruge del-anvisningen til at fjerne elementer fra listen.
Angiv det element, der skal slettes, ved hjælp af dets indeks. Det første (indledende) indeks er 0, og det sidste (endelige) indeks er -1.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[0]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[-1]
print(l)
# [1, 2, 3, 4, 5, 6, 7, 8]
del l[6]
print(l)
# [1, 2, 3, 4, 5, 6, 8]
Hvis du angiver et område med skiver, kan du slette flere elementer på én gang.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
del l[2:5]
print(l)
# [0, 1, 5, 6, 7, 8, 9]
l = list(range(10))
del l[:3]
print(l)
# [3, 4, 5, 6, 7, 8, 9]
l = list(range(10))
del l[4:]
print(l)
# [0, 1, 2, 3]
l = list(range(10))
del l[-3:]
print(l)
# [0, 1, 2, 3, 4, 5, 6]
Det er også muligt at angive hele området og slette alle elementer.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Hvis du angiver intervallet i skiven på denne måde og angiver trinvise trin, kan du slette flere springende elementer på én gang.
l = list(range(10))
del l[2:8:2]
print(l)
# [0, 1, 3, 5, 7, 8, 9]
l = list(range(10))
del l[::3]
print(l)
# [1, 2, 4, 5, 7, 8]
Du kan finde flere oplysninger om opskæring i følgende artikel.
Slet flere elementer, der opfylder kriterierne, i en batch.: liste optagelse indikation
Processen med at fjerne elementer, der opfylder betingelserne, svarer til processen med at efterlade (udtrække) elementer, der ikke opfylder betingelserne. List comprehension notation anvendes til denne form for behandling.
- Relaterede artikler:Brug af Python list comprehensions notation
Nedenfor er vist et eksempel på fjernelse af lige eller ulige elementer (= tilbage er lige eller ulige elementer).%
Dette er restoperatoren.i % 2
Dette er resten af i divideret med 2.
I listeforståelsesnotationen oprettes der en ny liste. I modsætning til de hidtil introducerede listetype-metoder forbliver den oprindelige liste uændret.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i for i in l if i % 2 == 0])
# [0, 2, 4, 6, 8]
print([i for i in l if i % 2 != 0])
# [1, 3, 5, 7, 9]
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Andre eksempler. Der er mulighed for en række forskellige behandlinger afhængigt af det betingede udtryk.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'David']
print([s for s in l if s != 'Bob'])
# ['Alice', 'Charlie', 'David']
print([s for s in l if s.endswith('e')])
# ['Alice', 'Charlie']
Hvis du vil fjerne dobbelte elementer, skal du bruge sæt-sæt-typen.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']