파이썬에서 목록을 비우는 방법?
이 방법으로 목록을 비우는 것은 "더러운"것 같습니다.
while len(alist) > 0 : alist.pop()
그렇게하는 명확한 방법이 있습니까?
이것은 실제로 목록에서 내용을 제거하지만 이전 레이블을 새로운 빈 목록으로 대체하지 않습니다.
del lst[:]
예를 들면 다음과 같습니다.
lst1 = [1, 2, 3]
lst2 = lst1
del lst1[:]
print(lst2)
완전성을 위해 슬라이스 할당은 동일한 효과를 갖습니다.
lst[:] = []
또한 부품을 동시에 교체하면서 목록의 일부를 축소하는 데 사용할 수도 있습니다 (그러나 문제의 범위를 벗어남).
그렇게 lst = []
하면 목록을 비우지 않고 새 객체를 만들어 변수에 바인딩 lst
하지만 이전 목록에는 여전히 동일한 요소가 있으며 다른 변수 바인딩이 있으면 효과가 분명해집니다.
파이썬 3.3 이상을 실행하는 경우, 당신은 사용할 수있는 clear()
방법 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 개 요소) [:]
(시작부터 끝까지의 모든 색인)
[:]는 슬라이스 연산자입니다. 자세한 내용은 이 질문 을 참조하십시오.
파이썬 2.5.2에서는 1.1 usec del l[:]
보다 약간 느립니다 l[:] = []
.
$ 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 행에 "보다 크거나 같은"부호가 있는지 확인하십시오. 생략하면 목록 [0]이 남습니다.
참고 URL : https://stackoverflow.com/questions/1400608/how-to-empty-a-list-in-python
'Programing' 카테고리의 다른 글
'var that = this;'는 무엇입니까? (0) | 2020.03.02 |
---|---|
왜 머그 소트보다 퀵 소트가 더 낫습니까? (0) | 2020.03.02 |
기존 열의 기본값을 설정하는 방법 (0) | 2020.03.02 |
Java의 클래스 경로에서 텍스트 파일을 실제로 읽는 방법 (0) | 2020.03.02 |
SQL Server 2005/2008에서 요일 가져 오기 (0) | 2020.03.02 |