如何清空Python中的列表?
看起来这么“肮脏”以这种方式清空列表:
while len(alist) > 0 : alist.pop()
有一个明确的方式来做到这一点?
这实际上从列表中删除内容,而不是用新的空列表replace旧标签
del lst[:]
例:
lst1 = [1, 2, 3] lst2 = lst1 del lst1[:] print(lst2)
为了完整性,切片分配达到相同的效果:
lst[:] = []
并且可以用来缩小列表的一部分,同时replace一个部分(但不在问题的范围之内)。
请注意,执行lst = []
不会清空列表,只是创build一个新对象并将其绑定到variableslst
,但旧列表仍然具有相同的元素,并且如果具有其他variables绑定,效果将显而易见。
你可以尝试:
alist[:] = []
这意味着:在位置[:]
(从开始到结束的所有索引)的列表[]
(0个元素)中拼接,
[:]是切片运算符。 看到这个问题的更多信息。
如果你有Python 3.3或更好的版本,你可以使用与clear()
, dict
, set
, deque
和其他可变容器types并行的list
clear()
方法:
alist.clear() # removes all items from alist (equivalent to del alist[:])
根据链接页面, alist *= 0
也可以达到同样的效果。
事实certificate,在Python 2.5.2中, del l[:]
比1.1 l[:] = []
usec 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
你可以使用另一个简单的代码(取决于你的情况)是:
index=len(list)-1 while index>=0: del list[index] index-=1
你必须从列表的长度开始索引,然后向后走,而不是0的索引,因为这会使你的索引等于列表的长度,只会减less一半。
此外,请确保while行有一个“大于或等于”的标志。 省略它会留下剩余的列表[0]。
list = []
将list
重置为空列表。
请注意,您通常不应该保留保留的函数名称,例如list
,它是列表对象的构造函数 – 例如,您可以使用lst
或list_
。