python editar - Como esvaziar uma lista em Python?




4 Answers

Isso realmente remove o conteúdo da lista, mas não substitui o rótulo antigo por uma nova lista vazia:

del lst[:]

Aqui está um exemplo:

lst1 = [1, 2, 3]
lst2 = lst1
del lst1[:]
print(lst2)

Por uma questão de completude, a atribuição de fatia tem o mesmo efeito:

lst[:] = []

Também pode ser usado para reduzir uma parte da lista enquanto substitui uma parte ao mesmo tempo (mas isso está fora do escopo da questão).

Note que fazer lst = [] não esvazia a lista, apenas cria um novo objeto e o liga à variável lst , mas a lista antiga ainda terá os mesmos elementos, e o efeito será aparente se tiver outras ligações de variáveis.

find de

Parece tão "sujo" esvaziar uma lista desta maneira:

while len(alist) > 0 : alist.pop()

Existe um caminho claro para fazer isso?




Você poderia tentar:

alist[:] = []

O que significa: Splice na lista [] (0 elementos) no local [:] (todos os índices do início ao fim)

O [:] é o operador de fatia. Veja esta questão para mais informações.




lst *= 0

tem o mesmo efeito que

lst[:] = []

É um pouco mais simples e talvez mais fácil de lembrar. Além disso, não há muito a dizer

A eficiência parece ser a mesma




Outro código simples que você pode usar (dependendo da sua situação) é:

index=len(list)-1

while index>=0:
    del list[index]
    index-=1

Você tem que iniciar o índice no comprimento da lista e retroceder versus índice em 0, para a frente, porque isso terminaria com um índice igual ao tamanho da lista, sendo apenas cortado pela metade.

Além disso, certifique-se de que a linha while tenha um sinal "maior que ou igual a". Omitir vai deixar você com a lista [0] restante.




Related

python list

Tags

python   list