Egy elem eltávolításához egy list típusú listából (tömbből) Pythonban a listamódszerek clear(), pop() és remove() segítségével. A lista pozícióját és tartományát az index vagy a slice segítségével is megadhatjuk, majd a del utasítással törölhetjük.
A következő információk itt találhatók.
- Minden elem eltávolítása:
clear()
- Töröl egy elemet a megadott pozícióból, és megkapja az értékét.:
pop()
- A megadott értékkel rendelkező elemeket keresi, és eltávolítja az első elemet.:
remove()
- Törlés a pozíció és a tartomány megadásával az indexszeletekben:
del
- Több, a feltételeknek megfelelő elem kötegelt törlése.:lista felvételének jelzése
Vegyük észre, hogy a listák különböző típusú adatokat tárolhatnak, és szigorúan különböznek a tömböktől. Használja a tömb (standard könyvtár) vagy a NumPy-t, ha tömböket akar kezelni olyan folyamatokhoz, amelyek memóriaméretet vagy memóriacímet igényelnek, vagy nagyméretű adatok numerikus számításához.
- Minden elem eltávolítása: clear()
- Töröl egy elemet a megadott pozícióból, és megkapja az értékét.: pop()
- A megadott értékkel rendelkező elemeket keresi, és eltávolítja az első elemet.: remove()
- Törlés a pozíció és a tartomány megadásával az indexszeletekben: del
- Több, a feltételeknek megfelelő elem kötegelt törlése.: lista felvételének jelzése
Minden elem eltávolítása: clear()
A lista clear() metódusában az összes elemet eltávolítjuk, így egy üres listát kapunk.
l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
l.clear()
print(l)
# []
Töröl egy elemet a megadott pozícióból, és megkapja az értékét.: pop()
A lista pop() metódusával törölhetünk egy elemet egy megadott pozícióból, és megkaphatjuk az adott elem értékét.
Az első (kezdeti) szám a 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]
Negatív értékkel is megadható a végponttól (utolsó) számított pozíció. A vég (utolsó) értéke -1.
print(l.pop(-2))
# 8
print(l)
# [1, 2, 3, 5, 6, 7, 9]
Ha az argumentum kimarad, és nincs megadva pozíció, akkor az utolsó (utolsó) elem törlődik.
print(l.pop())
# 9
print(l)
# [1, 2, 3, 5, 6, 7]
Nem létező pozíció megadása hibát eredményez.
# print(l.pop(100))
# IndexError: pop index out of range
Vegyük észre, hogy a pop(0), amely az első elemet távolítja el, a következő költséget igényli, és nem hatékony művelet. A listákon végzett különböző műveletek számítási komplexitásáról lásd a hivatalos wiki következő oldalát.O(n)
O(1)
A deque típust a szabványos könyvtár collections modulja biztosítja, mint olyan típust, amely ilyen költséggel törli az elemeket a tetejére. Ha például az adatokat sorbanállásként (FIFO) szeretnénk kezelni, akkor hatékonyabb a deque használata.
A megadott értékkel rendelkező elemeket keresi, és eltávolítja az első elemet.: remove()
A remove() listamódszerrel kereshetünk olyan elemeket, amelyek értéke megegyezik a megadott értékkel, és eltávolíthatjuk az első elemet.
l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']
Ha a lista egynél több olyan elemet tartalmaz, amely megfelel a megadott értéknek, csak az elsőt távolítja el.
l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']
Ha nem létező érték van megadva, hiba lép fel.
# l.remove('xxx')
# ValueError: list.remove(x): x not in list
Törlés a pozíció és a tartomány megadásával az indexszeletekben: del
A del utasítással is eltávolíthat elemeket a listából.
Adja meg a törlendő elemet az indexe alapján. Az első (kezdeti) index 0, az utolsó (végső) index pedig -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]
Ha egy tartományt szeletekkel ad meg, egyszerre több elemet is törölhet.
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]
Lehetőség van a teljes tartomány megadására és az összes elem törlésére is.
l = list(range(10))
del l[:]
print(l)
# []
[start:stop:step]
Ha így adja meg a tartományt a szeletben, és inkrementális lépést határoz meg, egyszerre több ugró elemet is törölhet.
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]
A szeleteléssel kapcsolatos további információkért lásd a következő cikket.
Több, a feltételeknek megfelelő elem kötegelt törlése.: lista felvételének jelzése
A feltételeknek megfelelő elemek eltávolításának folyamata egyenértékű a feltételeknek nem megfelelő elemek elhagyásának (kivonásának) folyamatával. Az ilyen típusú feldolgozásra a listamegértés jelölést használjuk.
- Kapcsolódó cikkek:A Python listamegértés jelölés használata
Az alábbiakban egy példa látható a páratlan vagy páros elemek eltávolítására (= páros vagy páratlan elemek meghagyása).%
Ez a maradék operátor.i % 2
Ez az i maradéka osztva 2-vel.
A listamegértés jelölésben egy új lista jön létre. Az eddig bemutatott listatípusú módszerekkel ellentétben az eredeti lista változatlan marad.
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]
Egyéb példák. A feltételes kifejezéstől függően többféle feldolgozás lehetséges.
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']
Ha a duplikált elemeket szeretné eltávolítani, használja a set set set típust.
print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']