如何在Python中清空列表?

安稳与你 提交于 2020-02-29 19:28:33

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

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

是否存在明确的方法?


#1楼

list = []

list重置为空列表。

请注意,通常您不应list_保留的函数名称,例如list ,它是列表对象的构造函数-例如,可以使用lstlist_代替。


#2楼

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

del lst[:]

这是一个例子:

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

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

lst[:] = []

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

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


#3楼

您可以尝试:

alist[:] = []

这意味着:在列表[] (0个元素)在位置[:]处拼接(所有索引从头到尾)

[:]是切片运算符。 有关更多信息,请参见此问题


#4楼

您可以使用的另一个简单代码(取决于您的情况)是:

index=len(list)-1

while index>=0:
    del list[index]
    index-=1

您必须在列表的长度处开始索引,然后相对于索引在0处向前,向后前进,因为这将使您最终获得的索引等于列表的长度,并且只将其切成两半。

另外,请确保while行上有一个“大于或等于”符号。 省略它会使您剩下list [0]。


#5楼

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

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

按照链接的文档页面,也可以使用alist *= 0来实现。

总结起来,有四种等效的方法可以就地清除列表(与PythonZen完全相反!):

  1. alist.clear() # Python 3.3+
  2. del alist[:]
  3. alist[:] = []
  4. alist *= 0
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!