source

목록을 비우려면 어떻게 해야 하나요?

goodcode 2023. 1. 9. 21:47
반응형

목록을 비우려면 어떻게 해야 하나요?

이런 식으로 목록을 비우는 것은 매우 "더러운" 것처럼 보인다.

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

그것을 할 수 있는 확실한 방법이 있나요?

이렇게 하면 실제로 목록에서 내용이 삭제되지만 이전 레이블이 새 빈 목록으로 대체되지는 않습니다.

del lst[:]

다음은 예를 제시하겠습니다.

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

완성도를 높이기 위해 슬라이스 할당도 동일한 효과를 발휘합니다.

lst[:] = []

또한 부품의 교환과 동시에 리스트의 일부를 축소할 수도 있습니다(단, 질문의 범위외).

주의:lst = []목록을 비우지 않고 새 개체를 생성하여 변수에 바인딩할 뿐입니다.lst단, 오래된 목록에는 동일한 요소가 있으며 다른 변수 바인딩이 있으면 효과가 나타납니다.

Python 3.3 이상을 실행하고 있다면 다음 방법을 사용할 수 있습니다.list, 이것은 와 평행합니다.clear()dict,set,deque및 기타 가변 컨테이너 유형:

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

링크된 매뉴얼페이지에 따르면, 같은 기능을 이용할 수도 있습니다.alist *= 0.

요약하자면, 목록을 지우는 방법에는 4가지가 있습니다(Python의 Zen과는 완전히 반대됩니다).

  1. alist.clear() # Python 3.3+
  2. del alist[:]
  3. alist[:] = []
  4. alist *= 0

다음을 시도해 보십시오.

alist[:] = []

즉, 리스트의 스플라이스[](0 요소) 위치[:](시작부터 끝까지 모든 인덱스)

[:]는 슬라이스 연산자입니다.자세한 내용은 이 질문을 참조하십시오.

python 2.5.2에서는del l[:]보다 약간 느리다l[:] = []1.1usec까지.

$ 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
lst *= 0

와 같은 효과가 있다

lst[:] = []

조금 더 간단하고 기억하기 쉬울지도 모릅니다.그것 말고는 별로 할 말이 없다

효율은 거의 비슷한 것 같다

list = []

리셋되다list빈 목록으로 이동합니다.

일반적으로 다음과 같은 예약된 함수 이름을 그림자처럼 만들지 마십시오.list목록 객체의 생성자입니다.lst또는list_그 대신 예를 들어.

상황에 따라 사용할 수 있는 또 다른 간단한 코드는 다음과 같습니다.

index=len(list)-1

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

목록 길이에서 인덱스를 시작하고 0에서 뒤로 대 인덱스로 이동해야 합니다. 그러면 목록 길이와 동일한 인덱스가 되고 절반만 잘라집니다.

또한 while 행에 "greater than than" 기호가 있는지 확인하십시오.그것을 생략하면 리스트[0]가 남는다.

언급URL : https://stackoverflow.com/questions/1400608/how-to-empty-a-list

반응형