2024-04-26 04:06:41 发布
网友
以这种方式清空列表似乎很“脏”:
while len(alist) > 0 : alist.pop()
有没有一种明确的方法可以做到这一点?
如果运行的是Python 3.3或更高版本,则可以使用list的^{}方法,该方法与dict、set、deque和其他可变容器类型的clear()并行:
list
dict
set
deque
clear()
alist.clear() # removes all items from alist (equivalent to del alist[:])
根据链接的文档页面,同样可以通过alist *= 0实现。
alist *= 0
总而言之,有四种相同的方法可以清除列表(与Zen of Python完全相反)以下内容:
alist.clear() # Python 3.3+
del alist[:]
alist[:] = []
这实际上会从列表中删除内容,但不会将旧标签替换为新的空列表:
del lst[:]
下面是一个例子:
lst1 = [1, 2, 3] lst2 = lst1 del lst1[:] print(lst2)
为了完整起见,切片赋值具有相同的效果:
lst[:] = []
它还可以用来缩小列表的一部分,同时替换一部分(但这超出了问题的范围)。
请注意,执行lst = []不会清空列表,只会创建一个新对象并将其绑定到变量lst,但旧列表仍将具有相同的元素,如果它具有其他变量绑定,则效果将非常明显。
lst = []
lst
你可以试试:
这意味着:在列表[](0个元素)的位置[:](从开始到结束的所有索引)中进行拼接
[]
[:]
[:]是切片运算符。有关详细信息,请参见this question。
如果运行的是Python 3.3或更高版本,则可以使用} 方法,该方法与
list
的^{dict
、set
、deque
和其他可变容器类型的clear()
并行:根据链接的文档页面,同样可以通过
alist *= 0
实现。总而言之,有四种相同的方法可以清除列表(与Zen of Python完全相反)以下内容:
alist.clear() # Python 3.3+
del alist[:]
alist[:] = []
alist *= 0
这实际上会从列表中删除内容,但不会将旧标签替换为新的空列表:
下面是一个例子:
为了完整起见,切片赋值具有相同的效果:
它还可以用来缩小列表的一部分,同时替换一部分(但这超出了问题的范围)。
请注意,执行
lst = []
不会清空列表,只会创建一个新对象并将其绑定到变量lst
,但旧列表仍将具有相同的元素,如果它具有其他变量绑定,则效果将非常明显。你可以试试:
这意味着:在列表
[]
(0个元素)的位置[:]
(从开始到结束的所有索引)中进行拼接[:]是切片运算符。有关详细信息,请参见this question。
相关问题 更多 >
编程相关推荐