Om een element uit een lijst (array) van het type list in Python te verwijderen, gebruik je de list methodes clear(), pop() en remove(). Je kunt ook de positie en het bereik van de lijst specificeren door index of slice te gebruiken en het dan verwijderen met het del statement.
De volgende informatie wordt hier verstrekt.
- Verwijder alle elementen:
clear()
- Verwijder een element op de opgegeven positie en verkrijg zijn waarde.:
pop()
- Zoekt naar elementen met de opgegeven waarde en verwijdert het eerste element.:
remove()
- Verwijderen door positie en bereik in index slice op te geven:
del
- Batch verwijderen van meerdere elementen die aan de criteria voldoen.:lijst opname-indicatie
Merk op dat lijsten gegevens van verschillende types kunnen opslaan, en strikt verschillend zijn van arrays. Gebruik array (standaardbibliotheek) of NumPy als je arrays wilt hanteren voor processen die geheugengrootte of geheugenadres vereisen, of voor numerieke berekeningen van grootschalige gegevens.
- Verwijder alle elementen: clear()
- Verwijder een element op de opgegeven positie en verkrijg zijn waarde.: pop()
- Zoekt naar elementen met de opgegeven waarde en verwijdert het eerste element.: remove()
- Verwijderen door positie en bereik in index slice op te geven: del
- Batch verwijderen van meerdere elementen die aan de criteria voldoen.: lijst opname-indicatie
Verwijder alle elementen: clear()
In de lijstmethode clear() worden alle elementen verwijderd, wat resulteert in een lege lijst.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Verwijder een element op de opgegeven positie en verkrijg zijn waarde.: pop()
De methode pop() van een lijst kan worden gebruikt om een element op een gespecificeerde positie te verwijderen en de waarde van dat element te krijgen.
Het eerste (initiële) nummer is 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]
Een negatieve waarde kan ook worden gebruikt om de positie vanaf het einde (laatste) aan te geven. Het einde (laatste) is -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Als het argument is weggelaten en geen positie is opgegeven, wordt het element aan het eind (laatste) verwijderd.
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Het opgeven van een niet-bestaande positie zal resulteren in een fout.
# print(l.pop(100))
# IndexError: pop index out of range
Merk op dat pop(0), dat het eerste element verwijdert, de volgende kosten vereist en geen efficiënte bewerking is. Zie de volgende pagina op de officiële wiki voor de rekenkundige complexiteit van verschillende bewerkingen op lijsten.O(n)
O(1)
Het deque type is voorzien in de standaard bibliotheek collections module als een type dat elementen naar de top verwijdert tegen deze kostprijs. Als u bijvoorbeeld gegevens als een wachtrij (FIFO) wilt behandelen, is het efficiënter om deque te gebruiken.
Zoekt naar elementen met de opgegeven waarde en verwijdert het eerste element.: remove()
De lijstmethode remove() kan worden gebruikt om elementen te zoeken met dezelfde waarde als opgegeven en het eerste element te verwijderen.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Als de lijst meer dan één element bevat dat overeenkomt met de opgegeven waarde, wordt alleen het eerste element verwijderd.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Als een niet-bestaande waarde wordt opgegeven, treedt een fout op.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Verwijderen door positie en bereik in index slice op te geven: del
Je kunt ook het del statement gebruiken om elementen uit de lijst te verwijderen.
Specificeer het element dat verwijderd moet worden met zijn index. De eerste (initiële) index is 0, en de laatste (definitieve) index is -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]
Als u een bereik specificeert met slices, kunt u meerdere elementen tegelijk verwijderen.
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]
Het is ook mogelijk om het hele bereik te specificeren en alle elementen te wissen.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Als u het bereik in de slice op deze manier specificeert en incrementele stap specificeert, kunt u meerdere springende elementen in één keer verwijderen.
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]
Voor meer informatie over snijden, zie het volgende artikel.
Batch verwijderen van meerdere elementen die aan de criteria voldoen.: lijst opname-indicatie
Het proces van het verwijderen van elementen die aan de voorwaarden voldoen, is gelijkwaardig aan het proces van het laten staan (extraheren) van elementen die niet aan de voorwaarden voldoen. Voor dit soort bewerkingen wordt de notatie list comprehension gebruikt.
- Verwante Artikelen:Python lijst notatie gebruiken
Een voorbeeld van het verwijderen van oneven of even elementen (= even of oneven elementen laten) wordt hieronder getoond.%
Dit is de rest-operator.i % 2
Dit is het restant van i gedeeld door 2.
In de list comprehension notatie wordt een nieuwe lijst gemaakt. In tegenstelling tot de lijsttype-methoden die tot nu toe zijn geïntroduceerd, blijft de oorspronkelijke lijst ongewijzigd.
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]
Andere voorbeelden. Afhankelijk van de voorwaardelijke uitdrukking is een verscheidenheid aan bewerkingen mogelijk.
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']
Als u dubbele elementen wilt verwijderen, gebruik dan het type set set.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']