在 Python 中清除列表

Rayven Esplanada 2023年1月30日 2021年3月21日
  1. 使用 clear() 清除 Python 中的列表
  2. 在 Python 中设置一个空的列表值来清除一个列表
  3. 在 Python 中使用 del 和切片运算符:清除列表
  4. 将整个列表与 0 相乘以清除 Python 中的列表
在 Python 中清除列表

本教程将演示清除 Python 列表的不同方法。

使用 clear() 清除 Python 中的列表

在 Python 中清除列表的最简单,最明显的方法是使用 clear() 方法,这是 Python 列表中的内置方法。

例如,使用整数值初始化列表,然后使用 clear() 函数删除所有值。

lst = [1, 6, 11, 16]
print(lst)
lst.clear()
print(lst)

输出:

[1, 6, 11, 16]
[]
注释
这是清除 Python 中的列表的快速简便的解决方案,但它只兼容 Python 3.3 及以上版本。

在 Python 中设置一个空的列表值来清除一个列表

清除现有列表变量的另一种方法是使用一对空的方括号 [] 为该变量设置一个空列表。

lst = [1, 6, 11, 16]
print(lst)

lst = []
print(lst)

输出:

[1, 6, 11, 16]
[]

尽管这样做也可以快速清除列表,但这不会从内存中删除列表的值。而是创建一个列表的新实例,并指向新创建的实例。

如果没有其他变量指向列表变量的先前值,则这些变量将不可访问并且将用于垃圾回收。

如果我们使两个变量指向同一列表,并在之后将其中一个变量设置为空列表,则可以清楚地看出这种情况。

lst = [1, 6, 11, 16]
lst2 = lst
print(lst)
print(lst2)

lst = []
print(lst)
print(lst2)

输出:

[1, 6, 11, 16]
[1, 6, 11, 16]
[]
[1, 6, 11, 16]

第二个列表 lst2 被设置为 lst 的值,但是即使在将新的 lst 值设置为空列表之后,列表 lst2 仍然保留以前的旧值。在这种情况下,先前的值不适合进行垃圾回收,因为仍然有指向它的变量。

在 Python 中使用 del 和切片运算符:清除列表

Python 关键字 del 用于完全删除内存中的对象及其引用。del 关键字用于删除 Python 对象,可迭代对象,列表的一部分等。

Python 中的冒号运算符:是用于将数组切成可接受两个整数参数的部分的运算符。

:操作符则是用来获取列表的实际引用进行删除。

lst = [1, 6, 11, 16]
lst2 = lst
print(lst)
print(lst2)

del lst[:]
print(lst)
print(lst2)

另一个不使用 del 关键字即可完成此操作的解决方案是将列表设置为空列表,但使用:运算符将以前的引用替换为空列表。

lst = [1, 6, 11, 16]
lst2 = lst
print(lst)
print(lst2)

lst[:] = []
print(lst)
print(lst2)

两种解决方案的输出如下:

[1, 6, 11, 16]
[1, 6, 11, 16]
[]
[]

从前面的示例中可以注意到,将现有列表变量设置为空列表实际上并不会删除先前的值。这个解决方案将完全删除之前的值,即使其他变量指向主列表中相同的值引用。

将整个列表与 0 相乘以清除 Python 中的列表

清除列表的最快方法是将整个列表乘以 0。将列表变量本身与 0 相乘将清除列表并清除其先前在内存中的引用。

lst = [1, 6, 11, 16]
lst2 = lst
print(lst)
print(lst2)

lst *= 0
print(lst)
print(lst2)

输出:

[1, 6, 11, 16]
[1, 6, 11, 16]
[]
[]

在所有提到的解决方案中,此方法是执行最快的解决方案。

总之,清除列表的最明显方法是在列表中使用内置的 clear() 函数,尽管执行最快的解决方案是将列表变量与值 0 相乘。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相关文章 - Python List