如何在Python中清空列表?

2020-12-02 20:14:57 发布

您现在位置:Python中文网/ 问答频道 /正文

以这种方式清空列表似乎很“脏”:

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

有没有一种明确的方法可以做到这一点?

3条回答
网友
1楼 ·

如果运行的是Python 3.3或更高版本,则可以使用list^{}方法,该方法与dictsetdeque和其他可变容器类型的clear()并行:

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

根据链接的文档页面,同样可以通过alist *= 0实现。

总而言之,有四种相同的方法可以清除列表(与Zen of Python完全相反)以下内容:

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

你可以试试:

alist[:] = []

这意味着:在列表[](0个元素)的位置[:](从开始到结束的所有索引)中进行拼接

[:]是切片运算符。有关详细信息,请参见this question

网友
3楼 ·

这实际上会从列表中删除内容,但不会将旧标签替换为新的空列表:

del lst[:]

下面是一个例子:

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

为了完整起见,切片赋值具有相同的效果:

lst[:] = []

它还可以用来缩小列表的一部分,同时替换一部分(但这超出了问题的范围)。

请注意,执行lst = []不会清空列表,只会创建一个新对象并将其绑定到变量lst,但旧列表仍将具有相同的元素,如果它具有其他变量绑定,则效果将非常明显。

相关问题