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

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

是否存在明确的方法来做到这一点?


当前回答

lst *= 0

效果与

lst[:] = []

这样更简单,也更容易记住。除此之外就没什么可说的了

效率似乎是一样的

其他回答

list = []

将列表重置为空列表。

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

你可以试试:

alist[:] = []

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

[:]是切片操作符。有关更多信息,请参阅这个问题。

如果你运行的是Python 3.3或更高版本,你可以使用list的clear()方法,它与dict、set、deque和其他可变容器类型的clear()方法并行:

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

根据链接的文档页面,也可以使用alist *= 0实现同样的效果。

总而言之,有四种等效的方法来就地清除列表(与Python的禅意完全相反!):

alist.clear() Python 3.3+ del alist [:] alist[:] = [] alist * 0

lst *= 0

效果与

lst[:] = []

这样更简单,也更容易记住。除此之外就没什么可说的了

效率似乎是一样的

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

index=len(list)-1

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

你必须从列表的长度开始索引从倒数开始索引从0开始,因为那样你会得到index等于列表的长度而它只是被切成两半。

另外,确保while行有一个“大于或等于”符号。省略它将留下列表[0]。