Есть ли причина делать что-то более сложное, чем одна из этих двух строк, когда вы хотите очистить список в Python?
old_list = []
old_list = list()
Причина, по которой я спрашиваю, заключается в том, что я только что увидел это в каком-то работающем коде
del old_list[ 0:len(old_list) ]
a[:x]
означает начало до х иa[x:]
означает х до конца.a[ 0:len(a) ]
можно записать какa[:]
. Вы также можете использовать негативы для подсчета с конца (a[-1]
это последний элемент).Ответы:
Очистка списка на месте повлияет на все остальные ссылки в этом же списке.
Например, этот метод не влияет на другие ссылки:
Но этот делает:
Вы также можете сделать:
источник
del a[:]
a
? Я думалa
иb
ссылаюсь на один и тот же объект ... Просто хочу знать почему. Спасибо.a.clear()
без проблем!Выполнение
alist = []
не очищает список, просто создает пустой список и привязывает его к переменнойalist
. Старый список все еще будет существовать, если у него были другие привязки переменных.Чтобы на самом деле очистить список на месте , вы можете использовать любой из этих способов:
alist.clear() # Python 3.3+, most obvious
del alist[:]
alist[:] = []
alist *= 0 # fastest
Смотрите страницу документации Mutable Sequence Types для более подробной информации.
источник
Существует очень простой способ очистить список Python. Используйте del list_name [:] .
Например:
источник
Мне кажется, что del вернет вам память, в то время как назначение нового списка приведет к удалению старого только тогда, когда gc runs.matter.Это может быть полезно для больших списков, но для небольшого списка оно должно быть незначительным.
Редактировать : как Algorias, это не имеет значения.
Обратите внимание, что
эквивалентно
источник
Удалит значения этой переменной списка
Удалит саму переменную из памяти
источник
Есть два случая, в которых вы можете очистить список:
old_list
дальше в своем коде;В случае 1 вы просто продолжаете задание:
В случае 2
del
оператор уменьшит количество ссылок до объекта списка, на которыйold list
указывает имя . Если объект списка указывается только именемold_list
в, счетчик ссылок будет равен 0, и объект будет освобожден для сборки мусора.источник
Если вы очищаете список, вам, очевидно, он больше не нужен. Если это так, вы можете просто удалить весь список простым методом del.
Но в случае, если вам это понадобится снова, вы можете переинициализировать его. Или просто очистите его элементы
источник
другое решение, которое работает отлично, - создать пустой список в качестве справочного пустого списка.
например у вас есть список как
a_list = [1,2,3]
. Чтобы очистить его, просто сделайте следующее:это создаст
a_list
пустой список, как иempt_list
.источник