목록을 비우려면 어떻게 해야 하나요?
이런 식으로 목록을 비우는 것은 매우 "더러운" 것처럼 보인다.
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과는 완전히 반대됩니다).
alist.clear() # Python 3.3+del alist[:]alist[:] = []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
'source' 카테고리의 다른 글
| max_allowed_packet 크기를 변경하는 방법 (0) | 2023.01.09 |
|---|---|
| JPA와 JDBC는 어떻게 다른가요? (0) | 2023.01.09 |
| MySQL 5.1보다 느린 Mariadb 5.5 (0) | 2023.01.09 |
| Jest: 객체 키와 값을 테스트하는 방법 (0) | 2023.01.09 |
| 배열에서 쿼리 문자열을 빌드하는 PHP 함수 (0) | 2023.01.09 |