问题:如何清空列表?
用这种方式清空列表似乎太“脏”了:
while len(alist) > 0 : alist.pop()是否存在明确的方法?
回答 0
实际上,这将从列表中删除内容,但不会用新的空列表替换旧标签:
del lst[:]这是一个例子:
lst1 = [1, 2, 3]
lst2 = lst1
del lst1[:]
print(lst2)
为了完整起见,切片分配具有相同的效果:
lst[:] = []它也可以用于缩小列表的一部分,同时替换一部分(但这超出了问题的范围)。
请注意,这样lst = []做不会清空列表,只是创建一个新对象并将其绑定到变量lst,但是旧列表仍将具有相同的元素,并且如果具有其他变量绑定,效果将显而易见。
回答 1
如果你正在运行的Python 3.3或更好的,你可以使用clear()的方法list,这是平行clear()的dict,set,deque和其他易变的容器类型:
alist.clear()  # removes all items from alist (equivalent to del alist[:])按照链接的文档页面,也可以使用来实现相同的目的alist *= 0。
总结起来,有四种等效的方法可以就地清除列表(与Python的Zen完全相反!):
- alist.clear() # Python 3.3+
- del alist[:]
- alist[:] = []
- alist *= 0
回答 2
回答 3
事实证明,使用python 2.5.2的del l[:]速度比l[:] = []使用1.1 usec的速度略慢。
$ 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回答 4
lst *= 0与…具有相同的效果
lst[:] = []它稍微简单一些,也许更容易记住。除此之外,无话可说
效率似乎差不多
回答 5
list = []将重置list为空列表。
请注意,通常您不应该遮盖保留的函数名称,例如list,它是列表对象的构造函数- 例如,可以使用lst或list_代替。
回答 6
您可以使用的另一个简单代码(取决于您的情况)是:
index=len(list)-1
while index>=0:
    del list[index]
    index-=1您必须在列表的长度处开始索引,然后相对于索引在0处向前,向后前进,因为这将使您最终获得的索引等于列表的长度,并且仅将其切成两半。
另外,请确保while行上有一个“大于或等于”符号。省略它会使您剩下list [0]。
	声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

