파이썬에서 목록을 지우고 싶을 때이 두 줄 중 하나보다 더 복잡한 것을 할 이유가 있습니까?
old_list = []
old_list = list()
내가 묻는 이유는 실행중인 코드에서 이것을 보았 기 때문입니다.
del old_list[ 0:len(old_list) ]
답변
목록을 지우면 동일한 목록의 다른 모든 참조에 영향을줍니다.
예를 들어이 방법은 다른 참조에는 영향을 미치지 않습니다.
>>> 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[:] = []
답변
이렇게 alist = []
목록을 삭제하지 않고, 단지 빈리스트를 만들어 변수에 바인드합니다 alist
. 다른 변수 바인딩이있는 경우 이전 목록이 계속 존재합니다.
실제로 내부에서 목록 을 지우려면 다음 방법 중 하나를 사용할 수 있습니다.
alist.clear() # Python 3.3+, most obvious
del alist[:]
alist[:] = []
alist *= 0 # fastest
자세한 내용은 Mutable Sequence Types 문서 페이지를 참조하십시오.
답변
파이썬 목록을 지우는 매우 간단한 방법이 있습니다. del list_name [:]을 사용하십시오 .
예를 들면 다음과 같습니다.
>>> a = [1, 2, 3]
>>> b = a
>>> del a[:]
>>> print a, b
[] []
답변
del은 당신에게 메모리를 되돌려 줄 것입니다. 새 목록을 할당하면 gc가 실행될 때만 이전 목록이 삭제됩니다.
큰 목록에는 유용 할 수 있지만 작은 목록에는 무시해도됩니다.
편집 : 알고리즘으로는 중요하지 않습니다.
참고
del old_list[ 0:len(old_list) ]
에 해당
del old_list[:]
답변
del list[:]
해당 목록 변수의 값을 삭제합니다
del list
변수 자체를 메모리에서 삭제합니다
답변
목록을 지우려는 경우가 두 가지 있습니다.
old_list
코드에서 이름을 더 사용하려고합니다 .- 이전 목록을 가능한 빨리 가비지 수집하여 일부 메모리를 확보하려고합니다.
경우 1 당신은 단지 어설 션으로 진행합니다 :
old_list = [] # or whatever you want it to be equal to
2의 경우, del
명령문은 이름이 old list
가리키는 목록 오브젝트에 대한 참조 계수를 줄 입니다. 목록 개체가 이름 만 가리키는 old_list
경우 참조 횟수는 0이되고 가비지 수집을 위해 개체가 해제됩니다.
del old_list
답변
목록을 지우고 있다면 더 이상 목록이 필요하지 않습니다. 그렇다면 간단한 방법으로 전체 목록을 삭제할 수 있습니다.
a = [1, 3, 5, 6]
del a # This will entirely delete a(the list).
그러나 다시 필요한 경우 다시 초기화 할 수 있습니다. 또는 단순히
del a[:]
