Ak chcete odstrániť prvok zo zoznamu (poľa) typu list v jazyku Python, použite metódy clear(), pop() a remove(). Môžete tiež určiť pozíciu a rozsah zoznamu pomocou index alebo slice a potom ho odstrániť pomocou príkazu del.
Tu sú uvedené tieto informácie.
- Odstránenie všetkých prvkov:
clear()
- Odstránenie prvku na zadanej pozícii a získanie jeho hodnoty.:
pop()
- Vyhľadá prvky so zadanou hodnotou a odstráni prvý prvok.:
remove()
- Odstránenie zadaním pozície a rozsahu v indexovom reze:
del
- Dávkové odstránenie viacerých prvkov, ktoré spĺňajú kritériá.:indikácia zaradenia do zoznamu
Všimnite si, že zoznamy môžu uchovávať údaje rôznych typov a striktne sa líšia od polí. Používajte pole (štandardná knižnica) alebo NumPy, keď chcete pracovať s poliami pre procesy, ktoré vyžadujú veľkosť pamäte alebo adresu pamäte, alebo pre numerické výpočty rozsiahlych údajov.
- Odstránenie všetkých prvkov: clear()
- Odstránenie prvku na zadanej pozícii a získanie jeho hodnoty.: pop()
- Vyhľadá prvky so zadanou hodnotou a odstráni prvý prvok.: remove()
- Odstránenie zadaním pozície a rozsahu v indexovom reze: del
- Dávkové odstránenie viacerých prvkov, ktoré spĺňajú kritériá.: indikácia zaradenia do zoznamu
Odstránenie všetkých prvkov: clear()
V metóde clear() sa odstránia všetky prvky zoznamu, čím vznikne prázdny zoznam.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Odstránenie prvku na zadanej pozícii a získanie jeho hodnoty.: pop()
Metódu pop() zoznamu možno použiť na odstránenie prvku na zadanej pozícii a získanie hodnoty tohto prvku.
Prvé (počiatočné) číslo 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]
Na určenie pozície od konca (poslednej) možno použiť aj zápornú hodnotu. Koniec (posledný) je -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Ak je argument vynechaný a nie je zadaná žiadna pozícia, vymaže sa prvok na konci (posledný).
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Zadanie neexistujúcej pozície bude mať za následok chybu.
# print(l.pop(100))
# IndexError: pop index out of range
Všimnite si, že operácia pop(0), ktorá odstráni prvý prvok, vyžaduje nasledujúce náklady a nie je efektívna. Výpočtovú zložitosť rôznych operácií so zoznamami nájdete na nasledujúcej stránke na oficiálnej wiki.O(n)
O(1)
Typ deque je k dispozícii v module kolekcií štandardnej knižnice ako typ, ktorý za túto cenu odstraňuje prvky na vrchole. Ak chcete napríklad s údajmi zaobchádzať ako s frontom (FIFO), je efektívnejšie použiť deque.
Vyhľadá prvky so zadanou hodnotou a odstráni prvý prvok.: remove()
Metódu remove() zoznamu možno použiť na vyhľadanie prvkov s rovnakou hodnotou, aká bola zadaná, a na odstránenie prvého prvku.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Ak zoznam obsahuje viac ako jeden prvok, ktorý zodpovedá zadanej hodnote, odstráni sa len prvý z nich.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Ak je zadaná neexistujúca hodnota, nastane chyba.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Odstránenie zadaním pozície a rozsahu v indexovom reze: del
Na odstránenie prvkov zo zoznamu môžete použiť aj príkaz del.
Zadajte prvok, ktorý sa má odstrániť, podľa jeho indexu. Prvý (počiatočný) index je 0 a posledný (konečný) index 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]
Ak zadáte rozsah s plátkami, môžete vymazať viacero prvkov naraz.
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]
Je tiež možné zadať celý rozsah a vymazať všetky prvky.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Ak takto zadáte rozsah v reze a určíte prírastkový krok, môžete naraz vymazať viacero skákajúcich prvkov.
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]
Ďalšie informácie o krájaní nájdete v nasledujúcom článku.
Dávkové odstránenie viacerých prvkov, ktoré spĺňajú kritériá.: indikácia zaradenia do zoznamu
Proces odstraňovania prvkov, ktoré spĺňajú podmienky, je ekvivalentný procesu ponechania (extrakcie) prvkov, ktoré podmienky nespĺňajú. Na tento druh spracovania sa používa notácia porozumenia zoznamu.
- Súvisiace články:Používanie notácie zoznamov jazyka Python
Príklad odstránenia nepárnych alebo párnych prvkov (= ponechanie párnych alebo nepárnych prvkov) je uvedený nižšie.%
Toto je operátor zvyšku.i % 2
Je to zvyšok i delený 2.
V zápise porozumenia zoznamu sa vytvorí nový zoznam. Na rozdiel od doteraz predstavených metód typu zoznam zostáva pôvodný zoznam nezmenený.
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]
Ďalšie príklady. V závislosti od podmieneného výrazu je možné rôzne spracovanie.
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']
Ak chcete odstrániť duplicitné prvky, použite typ set set.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']