应该如何清空List?

2019年11月4日 / 6次阅读 / Last Modified 2019年11月4日

python内置的List对象是我们非常喜欢使用的一种数据类型,简单方便用处广。在实际代码中,常常需要清空一个List,本文介绍清空List的几种方法和它们的区别。

赋空值(变地址)

>>> a = [1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> id(a)
2197138465480
>>> a = []
>>> a
[]
>>> id(a)
2197138963592

这种赋空值的方法,其实就是让变量指向一个新的地址,如果原地址没有别的变量引用,python会自动将这部分内存清空回收。

赋空值(不变地址)

>>> a = [1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> id(a)
2197138963592
>>> a[:] = []
>>> a
[]
>>> id(a)
2197138963592

List在python中是mutable变量,a[:]表示全选择的slice操作,高亮行代码的含义,就是选择a的全部元素,赋值为空。不过,这个操作是直接对元素赋值,因此不会改变a的地址。我们再看一段代码,体验一下这种对List中的一组元素赋值的快感:

>>> a = [1,2,3,4,5,6,7,8]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
>>> a[2:4] = []
>>> a
[1, 2, 5, 6, 7, 8]
>>> a[2:4] = [9,9]
>>> a
[1, 2, 9, 9, 7, 8]
>>> a[2:4] = [555]
>>> a
[1, 2, 555, 7, 8]

使用clear函数(不变地址)

>>> a = [1,2,3,4,5,6]
>>> a
[1, 2, 3, 4, 5, 6]
>>> id(a)
2197138465480
>>> a.clear()
>>> a
[]
>>> id(a)
2197138465480

使用clear函数的效果,等同于清空List的每一个元素,但变量a的指向不变。参考:List对象成员函数

使用del语句(小心地址已不可用)

>>> a = [1,2,3,4,5,6,7,8]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8]
>>> id(a)
2197138963592
>>> del a
>>> id(a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined

使用del a,直接酒把a整个删除了,a这个变量都不存在了!

>>> a = [1,2,3,4,5]
>>> a
[1, 2, 3, 4, 5]
>>> id(a)
2197138963592
>>> del a[:]
>>> a
[]
>>> id(a)
2197138963592

使用del a[:],感觉就好多了,只是删除List对象的元素,变量保留,效果和使用clear函数一样。既然del可以只删除List对象的元素,那就可以只删除部分元素,请看下面示例:

>>> a = [1,2,3,4,5,6,7,8,9]
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del a[2:4]
>>> a
[1, 2, 5, 6, 7, 8, 9]
>>> del a[2:4]
>>> a
[1, 2, 7, 8, 9]

以上就是对清空List各种方法的介绍,顺便介绍了一点删除List对象部分元素的实现方式。

-- EOF --

本文链接:https://www.pynote.net/archives/1439

相关文章

    留言区

    电子邮件地址不会被公开。 必填项已用*标注


    前一篇:
    后一篇:

    More

    麦新杰的Python笔记

    Ctrl+D 收藏本页


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top