Fjarlægir þætti af lista (fylki) í Python: clear(), pop(), remove(), del

Viðskipti

Til að fjarlægja frumefni af lista (fylki) af gerð lista í Python, notaðu listaaðferðirnar clear(), pop() og remove(). Þú getur líka tilgreint staðsetningu og svið listans með því að nota vísitölu eða sneið og síðan eytt því með del yfirlýsingunni.

Eftirfarandi upplýsingar eru veittar hér.

  • Fjarlægðu alla þætti:clear()
  • Eyddu þætti á tilgreindri staðsetningu og fáðu gildi þess.:pop()
  • Leitar að þáttum með tilgreint gildi og fjarlægir fyrsta þáttinn.:remove()
  • Eyðir með því að tilgreina staðsetningu og svið í vísisneið:del
  • Hópur eyða mörgum þáttum sem uppfylla skilyrðin.:vísbending um skráningu á lista

Athugaðu að listar geta geymt gögn af mismunandi gerðum og eru algjörlega frábrugðin fylkjum. Notaðu fylki (venjulegt bókasafn) eða NumPy þegar þú vilt meðhöndla fylki fyrir ferla sem krefjast minnisstærðar eða minnisvistfangs, eða fyrir tölulega útreikning á stórum gögnum.

Fjarlægðu alla þætti:clear()

Í listaaðferðinni clear() eru allir þættir fjarlægðir, sem leiðir til tóman lista.

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

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

Eyddu þætti á tilgreindri staðsetningu og fáðu gildi þess.:pop()

Aðferðina pop() á lista er hægt að nota til að eyða staki á tiltekinni staðsetningu og fá gildi þess þáttar.

Fyrsta (upphafs) talan er 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]

Neikvætt gildi er einnig hægt að nota til að tilgreina stöðuna frá endanum (síðast). Endirinn (síðast) er -1.

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

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

Ef röksemdafærslunni er sleppt og engin staða er tilgreind er stakinu í lokin (síðast) eytt.

print(l.pop())
# 9

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

Ef tilgreint er stað sem ekki er til mun það leiða til villu.

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

Athugaðu að pop(0), sem fjarlægir fyrsta þáttinn, krefst eftirfarandi kostnaðar og er ekki skilvirk aðgerð. Sjá eftirfarandi síðu á opinberu wiki fyrir útreikninga flókið ýmissa aðgerða á listum.
O(n)

O(1)Deque tegundin er gefin upp í venjulegu bókasafnssafnaeiningunni sem gerð sem eyðir þáttum efst á þessum kostnaði. Til dæmis, ef þú vilt meðhöndla gögn sem biðröð (FIFO), er skilvirkara að nota deque.

Leitar að þáttum með tilgreint gildi og fjarlægir fyrsta þáttinn.:remove()

Listaaðferðina remove() er hægt að nota til að leita að þáttum með sama gildi og tilgreint er og fjarlægja fyrsta þáttinn.

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

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

Ef listinn inniheldur fleiri en einn þátt sem passar við tilgreint gildi, verður aðeins sá fyrsti fjarlægður.

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

Ef gildi sem ekki er til er tilgreint kemur villa.

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

Eyðir með því að tilgreina staðsetningu og svið í vísisneið:del

Þú getur líka notað del yfirlýsinguna til að fjarlægja þætti af listanum.

Tilgreindu þáttinn sem á að eyða með vísitölunni. Fyrsta (upphaflega) vísitalan er 0 og síðasta (loka) vísitalan er -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]

Ef þú tilgreinir svið með sneiðum geturðu eytt mörgum þáttum í einu.

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]

Það er líka hægt að tilgreina allt svið og eyða öllum þáttum.

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

[start:stop:step]Ef þú tilgreinir svið í sneiðinni á þennan hátt og tilgreinir stigvaxandi skref geturðu eytt mörgum stökkþáttum í einu.

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]

Fyrir frekari upplýsingar um sneið, sjá eftirfarandi grein.

Hópur eyða mörgum þáttum sem uppfylla skilyrðin.:vísbending um skráningu á lista

Ferlið við að fjarlægja þætti sem uppfylla skilyrðin jafngildir því ferli að skilja eftir (útdráttur) þætti sem uppfylla ekki skilyrðin. Listaskilningurinn er notaður fyrir þessa tegund vinnslu.

Dæmi um að fjarlægja staka eða slétta þætti (= skilja eftir slétta eða odda þætti) er sýnt hér að neðan.
%Þetta er rekstraraðilinn sem eftir er.
i % 2
Þetta er afgangurinn af i deilt með 2.

Í listaskilningi er nýr listi búinn til. Ólíkt listategundaraðferðunum sem hingað til hafa verið kynntar er upprunalegi listinn óbreyttur.

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]

Önnur dæmi. Margvísleg úrvinnsla er möguleg eftir skilyrtri tjáningu.

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

Ef þú vilt fjarlægja tvítekna þætti skaltu nota tegund setts.

print(list(set(l)))
# ['David', 'Alice', 'Charlie', 'Bob']