Za odstranitev elementa s seznama (polja) tipa seznam v Pythonu uporabite metode clear(), pop() in remove(). Položaj in obseg seznama lahko določite tudi z uporabo index ali slice in ga nato izbrišete z ukazom del.
Tu so na voljo naslednje informacije.
- Odstranite vse elemente:
clear()
- Izbriši element na določenem mestu in pridobi njegovo vrednost.:
pop()
- Poišče elemente z določeno vrednostjo in odstrani prvi element.:
remove()
- Brisanje z določitvijo položaja in območja v rezini indeksa:
del
- paketno izbrišite več elementov, ki izpolnjujejo merila.:navedba vključitve na seznam
Upoštevajte, da lahko seznami shranjujejo podatke različnih tipov in da se bistveno razlikujejo od polj. Uporabite array (standardna knjižnica) ali NumPy, kadar želite obdelati polja za procese, ki zahtevajo velikost pomnilnika ali naslov pomnilnika, ali za numerične izračune obsežnih podatkov.
- Odstranite vse elemente: clear()
- Izbriši element na določenem mestu in pridobi njegovo vrednost.: pop()
- Poišče elemente z določeno vrednostjo in odstrani prvi element.: remove()
- Brisanje z določitvijo položaja in območja v rezini indeksa: del
- paketno izbrišite več elementov, ki izpolnjujejo merila.: navedba vključitve na seznam
Odstranite vse elemente: clear()
Pri metodi clear() se odstranijo vsi elementi seznama in nastane prazen seznam.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Izbriši element na določenem mestu in pridobi njegovo vrednost.: pop()
Z metodo pop() seznama lahko izbrišete element na določenem mestu in dobite vrednost tega elementa.
Prvo (začetno) število je 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]
Negativno vrednost lahko uporabite tudi za določitev položaja od konca (zadnjega). Konec (zadnji) je -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Če je argument izpuščen in ni določen položaj, se izbriše element na koncu (zadnji).
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Navedba neobstoječega položaja bo povzročila napako.
# print(l.pop(100))
# IndexError: pop index out of range
Upoštevajte, da je za operacijo pop(0), ki odstrani prvi element, potreben naslednji strošek in ni učinkovita operacija. Za računsko zahtevnost različnih operacij na seznamih glejte naslednjo stran na uradnem wikiju.O(n)
O(1)
Tip deque je na voljo v modulu zbirke standardne knjižnice kot tip, ki za to ceno izbriše elemente na vrhu. Če želite na primer podatke obravnavati kot čakalno vrsto (FIFO), je učinkovitejša uporaba tipa deque.
Poišče elemente z določeno vrednostjo in odstrani prvi element.: remove()
Z metodo remove() lahko poiščete elemente z enako vrednostjo, kot je navedena, in odstranite prvi element.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Če seznam vsebuje več kot en element, ki ustreza določeni vrednosti, bo odstranjen le prvi element.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Če je navedena neobstoječa vrednost, pride do napake.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Brisanje z določitvijo položaja in območja v rezini indeksa: del
Za odstranitev elementov s seznama lahko uporabite tudi ukaz del.
Določite element, ki ga želite izbrisati, z njegovim indeksom. Prvi (začetni) indeks je 0, zadnji (končni) indeks pa je -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]
Če določite območje z rezinami, lahko izbrišete več elementov naenkrat.
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]
Določite lahko tudi celotno območje in izbrišete vse elemente.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Če na ta način določite območje v rezini in inkrementalni korak, lahko hkrati izbrišete več skakajočih elementov.
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]
Za več informacij o rezanju glejte naslednji članek.
paketno izbrišite več elementov, ki izpolnjujejo merila.: navedba vključitve na seznam
Postopek odstranjevanja elementov, ki izpolnjujejo pogoje, je enakovreden postopku puščanja (izločanja) elementov, ki ne izpolnjujejo pogojev. Za tovrstno obdelavo se uporablja zapis za razumevanje seznama.
- Povezani članki:Uporaba zapisa za razumevanje seznamov v Pythonu
Primer odstranitve lihih ali sodih elementov (= puščanje sodih ali lihih elementov) je prikazan spodaj.%
To je operator preostanka.i % 2
To je ostanek števila i, deljen z 2.
V zapisu za razumevanje seznama se ustvari nov seznam. Za razliko od doslej predstavljenih metod tipa seznama ostane prvotni seznam nespremenjen.
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]
Drugi primeri. Glede na pogojni izraz je mogoča različna obdelava.
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']
Če želite odstraniti podvojene elemente, uporabite vrsto set set.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']