Различные способы очистки списков
Есть ли какая-нибудь причина сделать что-то более сложное, чем одна из этих двух строк, когда вы хотите очистить список в Python?
old_list = []
old_list = list()
Причина, по которой я спрашиваю, это то, что я только что видел это в некотором запущенном коде:
del old_list[ 0:len(old_list) ]
Ответы
Ответ 1
Удаление списка на месте повлияет на все другие ссылки того же списка.
Например, этот метод не влияет на другие ссылки:
>>> a = [1, 2, 3]
>>> b = a
>>> a = []
>>> print(a)
[]
>>> print(b)
[1, 2, 3]
Но это делает:
>>> a = [1, 2, 3]
>>> b = a
>>> del a[:] # equivalent to del a[0:len(a)]
>>> print(a)
[]
>>> print(b)
[]
>>> a is b
True
Вы также можете сделать:
>>> a[:] = []
Ответ 2
Существует очень простой способ очистить список Python. Используйте del list_name [:].
Например:
>>> a = [1, 2, 3]
>>> b = a
>>> del a[:]
>>> print a, b
[] []
Ответ 3
Мне кажется, что del предоставит вам память назад, а при назначении нового списка будет удалено старое, только когда gc runs.matter.
Это может быть полезно для больших списков, но для небольшого списка оно должно быть незначительным.
Изменить. Как Альгориас, это не имеет значения.
Обратите внимание, что
del old_list[ 0:len(old_list) ]
эквивалентно
del old_list[:]
Ответ 4
Выполнение alist = []
не очищает список, а просто создает пустой список и связывает его с переменной alist
. Старый список все еще будет существовать, если у него были другие привязки переменных.
Чтобы на самом деле очистить список на месте, вы можете использовать любой из этих способов:
-
alist.clear() # Python 3.3+, most obvious
-
del alist[:]
-
alist[:] = []
-
alist *= 0 # fastest
Смотрите страницу документации Mutable Sequence Types для более подробной информации.
Ответ 5
Есть два случая, когда вы можете удалить список:
- Вы хотите использовать имя
old_list
далее в своем коде;
- Вы хотите, чтобы старый список был собран как можно скорее, чтобы освободить некоторую память;
В случае 1 вы просто продолжаете настрой:
old_list = [] # or whatever you want it to be equal to
В случае 2 оператор del
уменьшит счетчик ссылок до объекта списка, на которое указывает имя old list
. Если объект списка указывается только именем old_list
at, счетчик ссылок будет равен 0, и объект будет освобожден для сбора мусора.
del old_list
Ответ 6
del list[:]
Удалит значения этой переменной списка
del list
Удалит эту переменную из памяти
Ответ 7
Если вы очищаете список, вам, очевидно, больше не нужен этот список. Если это так, вы можете просто удалить весь список простым методом del.
a = [1, 3, 5, 6]
del a # This will entirely delete a(the list).
Но в случае, если вам это нужно, вы можете повторно инициализировать его. Или просто просто очистите его элементы
del a[:]
Ответ 8
другое решение, которое прекрасно работает, - это создать пустой список в качестве ссылочного пустого списка.
empt_list = []
например, у вас есть список a_list = [1,2,3]
. Чтобы очистить его, сделайте следующее:
a_list = list(empt_list)
это сделает a_list
пустой список, как и empt_list
.