Eliminació d’elements d’una llista (matriu) en Python: clear(), pop(), remove(), del

Negocis

Per eliminar un element d’una llista (matriu) de tipus llista a Python, utilitzeu els mètodes de llista clear(), pop() i remove(). També podeu especificar la posició i l’interval de la llista utilitzant index o slice i després suprimir-lo amb la instrucció del.

La informació següent es proporciona aquí.

  • Elimina tots els elements:clear()
  • Suprimiu un element a la posició especificada i obteniu el seu valor.:pop()
  • Cerca elements amb el valor especificat i elimina el primer element.:remove()
  • Esborrant especificant la posició i l’interval a la secció d’índex:del
  • Eliminar per lots diversos elements que compleixen els criteris.:indicació d’inclusió a la llista

Tingueu en compte que les llistes poden emmagatzemar dades de diferents tipus i són estrictament diferents de les matrius. Utilitzeu array (biblioteca estàndard) o NumPy quan vulgueu gestionar matrius per a processos que requereixen mida de memòria o adreça de memòria, o per al càlcul numèric de dades a gran escala.

Elimina tots els elements:clear()

En el mètode de llista clear(), tots els elements s’eliminen, donant lloc a una llista buida.

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

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

Suprimiu un element a la posició especificada i obteniu el seu valor.:pop()

El mètode pop() d’una llista es pot utilitzar per eliminar un element en una posició especificada i obtenir el valor d’aquest element.

El primer nombre (inicial) és 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]

També es pot utilitzar un valor negatiu per especificar la posició des del final (últim). El final (últim) és -1.

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

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

Si s’omet l’argument i no s’especifica cap posició, s’elimina l’element al final (últim).

print(l.pop())
# 9

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

Especificar una posició inexistent donarà lloc a un error.

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

Tingueu en compte que pop(0), que elimina el primer element, requereix el cost següent i no és una operació eficient. Vegeu la pàgina següent a la wiki oficial per conèixer la complexitat computacional de diverses operacions a les llistes.
O(n)

O(1)El tipus deque es proporciona al mòdul estàndard de col·leccions de biblioteques com un tipus que elimina elements a la part superior amb aquest cost. Per exemple, si voleu tractar les dades com una cua (FIFO), és més eficient utilitzar deque.

Cerca elements amb el valor especificat i elimina el primer element.:remove()

El mètode de llista remove() es pot utilitzar per cercar elements amb el mateix valor especificat i eliminar el primer element.

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

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

Si la llista conté més d’un element que coincideix amb el valor especificat, només s’eliminarà el primer.

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

Si s’especifica un valor inexistent, es produeix un error.

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

Esborrant especificant la posició i l’interval a la secció d’índex:del

També podeu utilitzar la instrucció del per eliminar elements de la llista.

Especifiqueu l’element que voleu suprimir pel seu índex. El primer índex (inicial) és 0 i l’últim índex (final) és -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]

Si especifiqueu un interval amb seccions, podeu suprimir diversos elements alhora.

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]

També és possible especificar tot el rang i eliminar tots els elements.

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

[start:stop:step]Si especifiqueu l’interval del sector d’aquesta manera i especifiqueu un pas incremental, podeu suprimir diversos elements de salt alhora.

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]

Per obtenir més informació sobre el tall, consulteu l’article següent.

Eliminar per lots diversos elements que compleixen els criteris.:indicació d’inclusió a la llista

El procés d’eliminació d’elements que compleixen les condicions és equivalent al procés de deixar (extreure) elements que no compleixen les condicions. La notació de comprensió de llista s’utilitza per a aquest tipus de processament.

A continuació es mostra un exemple d’eliminació d’elements parells o senars (= deixar elements parells o senars).
%Aquest és l’operador restant.
i % 2
Aquesta és la resta de i dividida per 2.

A la notació de comprensió de la llista, es crea una llista nova. A diferència dels mètodes de tipus de llista introduïts fins ara, la llista original es manté sense canvis.

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]

Altres exemples. És possible una varietat de processaments en funció de l’expressió condicional.

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

Si voleu eliminar elements duplicats, utilitzeu el tipus de conjunt establert.

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