Eliminarea elementelor dintr-o listă (array) în Python: clear(), pop(), remove(), del

Afaceri

Pentru a elimina un element dintr-o listă (array) de tip listă în Python, utilizați metodele de listă clear(), pop() și remove(). Puteți, de asemenea, să specificați poziția și intervalul din listă folosind index sau slice și apoi să o ștergeți folosind instrucțiunea del.

Aici sunt furnizate următoarele informații.

  • Îndepărtați toate elementele:clear()
  • Șterge un element din poziția specificată și obține valoarea acestuia.:pop()
  • Caută elementele cu valoarea specificată și elimină primul element.:remove()
  • Ștergerea prin specificarea poziției și a intervalului în felia de indice:del
  • Ștergeți pe lot mai multe elemente care îndeplinesc criteriile.:indicație de includere în listă

Rețineți că listele pot stoca date de diferite tipuri și sunt strict diferite de array-uri. Utilizați array (biblioteca standard) sau NumPy atunci când doriți să gestionați array-uri pentru procese care necesită dimensiunea sau adresa de memorie sau pentru calculul numeric al datelor la scară mare.

Îndepărtați toate elementele: clear()

În metoda clear() a listei, toate elementele sunt eliminate, rezultând o listă goală.

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

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

Șterge un element din poziția specificată și obține valoarea acestuia.: pop()

Metoda pop() a unei liste poate fi utilizată pentru a șterge un element la o poziție specificată și pentru a obține valoarea acelui element.

Primul număr (inițial) este 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]

O valoare negativă poate fi, de asemenea, utilizată pentru a specifica poziția de la sfârșit (ultima). Sfârșitul (ultimul) este -1.

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

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

În cazul în care argumentul este omis și nu se specifică nicio poziție, se șterge elementul de la sfârșit (ultimul).

print(l.pop())
# 9

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

Specificarea unei poziții inexistente va duce la o eroare.

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

Rețineți că pop(0), care elimină primul element, necesită următorul cost și nu este o operație eficientă. Consultați următoarea pagină din wiki-ul oficial pentru a vedea complexitatea de calcul a diferitelor operații asupra listelor.
O(n)

O(1)Tipul deque este furnizat în modulul de colecții al bibliotecii standard ca un tip care șterge elemente în partea de sus la acest cost. De exemplu, dacă doriți să tratați datele ca o coadă (FIFO), este mai eficient să utilizați deque.

Caută elementele cu valoarea specificată și elimină primul element.: remove()

Metoda de listă remove() poate fi utilizată pentru a căuta elemente cu aceeași valoare ca cea specificată și pentru a elimina primul element.

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

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

În cazul în care lista conține mai mult de un element care se potrivește cu valoarea specificată, doar primul va fi eliminat.

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

Dacă se specifică o valoare inexistentă, se produce o eroare.

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

Ștergerea prin specificarea poziției și a intervalului în felia de indice: del

De asemenea, puteți utiliza instrucțiunea del pentru a elimina elemente din listă.

Precizați elementul care urmează să fie șters prin indicele său. Primul indice (inițial) este 0, iar ultimul indice (final) este -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]

Dacă specificați un interval cu felii, puteți șterge mai multe elemente deodată.

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]

De asemenea, este posibilă specificarea întregului interval și ștergerea tuturor elementelor.

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

[start:stop:step]Dacă specificați intervalul din felie în acest mod și precizați pasul incremental, puteți șterge mai multe elemente săritoare deodată.

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]

Pentru mai multe informații despre feliere, consultați următorul articol.

Ștergeți pe lot mai multe elemente care îndeplinesc criteriile.: indicație de includere în listă

Procesul de îndepărtare a elementelor care îndeplinesc condițiile este echivalent cu procesul de a lăsa (extrage) elementele care nu îndeplinesc condițiile. Pentru acest tip de procesare se utilizează notația de înțelegere a listei.

Un exemplu de eliminare a elementelor pare sau impare (= lăsând elemente pare sau impare) este prezentat mai jos.
%Acesta este operatorul restului.
i % 2
Acesta este restul lui i împărțit la 2.

În notația de înțelegere a listei, se creează o nouă listă. Spre deosebire de metodele de tip listă introduse până acum, lista originală rămâne neschimbată.

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]

Alte exemple. În funcție de expresia condițională, este posibilă o varietate de prelucrări.

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

Dacă doriți să eliminați elementele duplicate, utilizați tipul set set.

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