Elementide eemaldamine loendist (massiivi) Pythonis: clear(), pop(), remove(), del

Äri

Elementide eemaldamiseks loenditüüpi loendist (massiivi) Pythonis kasutatakse loendimeetodeid clear(), pop() ja remove(). Samuti saab määrata loendi positsiooni ja vahemiku, kasutades index või slice, ning seejärel kustutada selle, kasutades käsku del.

Siin on esitatud järgmine teave.

  • Eemaldage kõik elemendid:clear()
  • Kustutab elemendi määratud positsioonilt ja saab selle väärtuse.:pop()
  • Otsib elemendid, millel on määratud väärtus, ja eemaldab esimese elemendi.:remove()
  • Kustutamine, määrates positsiooni ja vahemiku indeksilõikes:del
  • Mitme kriteeriumidele vastava elemendi koguseline kustutamine.:loetellu lisamise märge

Pange tähele, et loendid võivad salvestada eri tüüpi andmeid ja erinevad rangelt massiividest. Kasutage massiive (standardraamatukogu) või NumPy, kui soovite käsitseda massiive protsesside jaoks, mis nõuavad mälu suurust või mälu aadressi, või suurte andmete numbrilisteks arvutusteks.

Eemaldage kõik elemendid: clear()

Nimekirja meetodis clear() eemaldatakse kõik elemendid, mille tulemuseks on tühi nimekiri.

l = list(range(10))
print(l)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

l.clear()
print(l)
# []

Kustutab elemendi määratud positsioonilt ja saab selle väärtuse.: pop()

Nimekirja meetodit pop() saab kasutada elemendi kustutamiseks kindlaksmääratud positsioonil ja selle elemendi väärtuse saamiseks.

Esimene (esialgne) number on 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]

Negatiivset väärtust võib kasutada ka positsiooni määramiseks lõpust (viimane). Lõpp (viimane) on -1.

print(l.pop(-2))
# 8

print(l)
# [1, 2, 3, 5, 6, 7, 9]

Kui argument on välja jäetud ja positsiooni ei ole määratud, kustutatakse lõpus olev (viimane) element.

print(l.pop())
# 9

print(l)
# [1, 2, 3, 5, 6, 7]

Olematu positsiooni määramine toob kaasa vea.

# print(l.pop(100))
# IndexError: pop index out of range

Pange tähele, et pop(0), mis eemaldab esimese elemendi, nõuab järgmisi kulusid ja ei ole tõhus operatsioon. Vaata järgmist lehekülge ametlikus wikis erinevate loendite operatsioonide arvutuskomplekssuse kohta.
O(n)

O(1)Tüüp deque on standardraamatukogu kollektsioonide moodulis esitatud tüübina, mis kustutab elemendid selle hinnaga ülespoole. Näiteks kui soovite andmeid käsitleda järjekorras (FIFO), on tõhusam kasutada deque-tüüpi.

Otsib elemendid, millel on määratud väärtus, ja eemaldab esimese elemendi.: remove()

Nimekirja meetodi remove() abil saab otsida elemente, millel on sama väärtus, mis on määratud, ja eemaldada esimene element.

l = ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']
print(l)
# ['Alice', 'Bob', 'Charlie', 'Bob', 'Dave']

l.remove('Alice')
print(l)
# ['Bob', 'Charlie', 'Bob', 'Dave']

Kui loendis on rohkem kui üks element, mis vastab määratud väärtusele, eemaldatakse ainult esimene element.

l.remove('Bob')
print(l)
# ['Charlie', 'Bob', 'Dave']

Kui on määratud olematu väärtus, tekib viga.

# l.remove('xxx')
# ValueError: list.remove(x): x not in list

Kustutamine, määrates positsiooni ja vahemiku indeksilõikes: del

Elementide eemaldamiseks nimekirjast saate kasutada ka käsku del.

Määrake kustutatav element selle indeksi järgi. Esimene (esialgne) indeks on 0 ja viimane (lõplik) indeks on -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]

Kui määrate vahemiku viiludega, saate kustutada mitu elementi korraga.

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]

Samuti on võimalik määrata kogu vahemik ja kustutada kõik elemendid.

l = list(range(10))
del l[:]
print(l)
# []

[start:stop:step]Kui määrate niiviisi vahemiku ja määrate astmelise sammu, saate korraga kustutada mitu hüppelist elementi.

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]

Lisateavet viilutamise kohta leiate järgmisest artiklist.

Mitme kriteeriumidele vastava elemendi koguseline kustutamine.: loetellu lisamise märge

Tingimustele vastavate elementide eemaldamise protsess on samaväärne tingimustele mittevastavate elementide jätmise (väljavõtmise) protsessiga. Sellise töötlemise jaoks kasutatakse nimekirja mõistmise märkust.

Allpool on esitatud näide paaritu või paaritu elemendi eemaldamise kohta (= paaritu või paaritu elemendi jätmise kohta).
%See on jääkoperaator.
i % 2
See on i jääk, mis on jagatud 2ga.

Loetelu mõistmise märkimises luuakse uus loend. Erinevalt seni tutvustatud loenditüübi meetoditest jääb algne loend muutumatuks.

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]

Muud näited. Sõltuvalt tingimuslikust väljendist on võimalik mitmesugune töötlemine.

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']

Kui soovite eemaldada dubleerivaid elemente, kasutage komplekti tüüpi.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']
Copied title and URL