[python] 목록을 지우는 다른 방법

파이썬에서 목록을 지우고 싶을 때이 두 줄 중 하나보다 더 복잡한 것을 할 이유가 있습니까?

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. 다른 변수 바인딩이있는 경우 이전 목록이 계속 존재합니다.

실제로 내부에서 목록 지우려면 다음 방법 중 하나를 사용할 수 있습니다.

  1. alist.clear() # Python 3.3+, most obvious
  2. del alist[:]
  3. alist[:] = []
  4. 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

변수 자체를 메모리에서 삭제합니다


답변

목록을 지우려는 경우가 두 가지 있습니다.

  1. old_list코드에서 이름을 더 사용하려고합니다 .
  2. 이전 목록을 가능한 빨리 가비지 수집하여 일부 메모리를 확보하려고합니다.

경우 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[:]