Как удалить список в Python?

Кажется, что "грязный" опустошает список таким образом:

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

Существует ли для этого четкий способ?

Ответ 1

Это фактически удаляет содержимое из списка, а не заменяет старую метку новым пустым списком

del lst[:]

Пример:

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

Для полноты, назначение срезов достигает такого же эффекта:

lst[:] = []

и может использоваться для сокращения части списка при одновременном замене части (но выходит за рамки вопроса).

Обратите внимание, что выполнение lst = [] не пустет список, просто создает новый объект и связывает его с переменной lst, но старый список будет по-прежнему иметь одни и те же элементы, и эффект будет очевидным, если бы он имел другое переменные привязки.

Ответ 2

Вы можете попробовать:

alist[:] = []

Это означает: объединение в списке [] (0 элементов) в месте [:] (все индексы от начала до конца)

[:] - это оператор среза. См. этот вопрос для получения дополнительной информации.

Ответ 3

Если у вас есть Python 3.3 или выше, вы можете использовать clear() метод list, который параллелен clear() dict, set, deque и другие изменяемые типы контейнеров:

alist.clear()  # removes all items from alist (equivalent to del alist[:])

Как и на связанной странице, это также может быть достигнуто с помощью alist *= 0.

Ответ 4

получается, что с python 2.5.2, del l[:] немного медленнее, чем l[:] = [] на 1.1 usec.

$ python -mtimeit "l=list(range(1000))" "b=l[:];del b[:]"
10000 loops, best of 3: 29.8 usec per loop
$ python -mtimeit "l=list(range(1000))" "b=l[:];b[:] = []"
10000 loops, best of 3: 28.7 usec per loop
$ python -V
Python 2.5.2

Ответ 5

Еще один простой код, который вы можете использовать (в зависимости от вашей ситуации):

index=len(list)-1

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

Вам нужно начинать индексировать по длине списка и идти назад по сравнению с индексом на 0, вперед, потому что это приведет к тому, что индекс будет равен длине списка, при этом он будет разрезан только наполовину.

Кроме того, убедитесь, что строка while имеет знак "больше или равно". Опуская это, вы оставите список со списком [0].

Ответ 6

list = []

будет reset list в пустой список.

Обратите внимание, что вы вообще не должны затенять зарезервированные имена функций, такие как list, который является конструктором для объекта списка. Вместо этого вы можете использовать lst или list_.