Python 基础教程

Python 高级教程

Python 相关应用

Python 笔记

Python FAQ

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/python-list-append.html

python append 函数的使用方法详解

Python 列表 list 详解 Python 列表 list 详解


python 中 append 函数常指内置类 list(列表)的 append() 函数,它将一个元素添加到列表的尾部。

添加 item 到列表中

列表对象的 append() 方法将元素对象作为参数并将其添加到现有列表的末尾,紧随其最后一个元素之后:

>>> numbers = [1, 2, 3]
>>> numbers.append(4)
>>> numbers
[1, 2, 3, 4]

每次调用列表对象的 .append() 函数时,该方法都会在列表的末尾或右侧添加一个新 item。下图说明了该过程:

python list append 调用过程

python 列表在末尾处为新元素保留额外空间。调用 .append() 将在可用空间中放置新 item。

python 列表的额外空间是在之前扩容时,提前申请下来的,在列表触发扩容操作时,列表增量是当前容量的 1/8 再加上 3 或 6,即新容量是 PY_SSIZE_T_MAX * 9/8 + 6,其中 PY_SSIZE_T_MAX 是旧容量,。

此外,值得一提的是,扩容条件:已有数据项个数 + 1 > 当前列表容量

在实际操作中,.append() 可以将任何类型的对象添加到指定列表中:

>>> mixed = [1, 2]

>>> mixed.append(3)
>>> mixed
[1, 2, 3]

>>> mixed.append("four")
>>> mixed
[1, 2, 3, 'four']

>>> mixed.append(5.0)
>>> mixed
[1, 2, 3, 'four', 5.0]

列表可以保存不同数据类型和 Python 对象,如上示例中,首先添加一个整数,然后添加一个字符串,最后添加一个浮点数。此外,你也可以添加另一个列表、字典、元组、用户定义的对象等。

>>> x = [1, 2, 3, 4]
>>> y = (5, 6)

>>> x.append(y)
>>> x
[1, 2, 3, 4, (5, 6)]

python 列表 append 也可以使用切片技术来实现,通过切片(slice)指定追加元素,如下:

>>> numbers = [1, 2, 3]

>>> # Equivalent to numbers.append(4)
>>> numbers[len(numbers):] = [4]
>>> numbers
[1, 2, 3, 4]

也可以是批量操作:

>>> numbers = [1, 2, 3]

>>> # Equivalent to numbers.append(4)
>>> # Equivalent to numbers.append(5)
>>> numbers[len(numbers):] = [4, 5]
>>> numbers
[1, 2, 3, 4, 5]

如上批量操作,也可以用 extend() 来实现,它将可迭代对象作为参数,解包(unpack)其 item,并将它们添加到目标列表的末尾。

>>> x = [1, 2, 3, 4]
>>> y = (5, 6, 7)
>>> x.extend(y)
>>> x
[1, 2, 3, 4, 5, 6, 7]

>>> x = [1, 2, 3, 4]
>>> y = (5, 6, 7)
>>> # Equivalent to x.extend(y)
>>> x[len(x):] = y
>>> x
[1, 2, 3, 4, 5, 6, 7]

append 函数返回 None

在实际操作中,我们发现调用 append 函数其返回 None,如下:

>>> x = [1, 2, 3, 4]
>>> y = x.append(5)
>>> y is None
True
>>> x
[1, 2, 3, 4, 5]

append 与列表推导式

使用 .append() 在 for 循环中完全填充一个空列表。在循环内部,您可以操作数据并使用 .append() 将连续结果添加到列表中。假设您需要创建一个函数,该函数接受一个数字序列并返回一个包含每个数字平方根的列表:

>>> import math

>>> def square_root(numbers):
...     result = []
...     for number in numbers:
...         result.append(math.sqrt(number))
...     return result
...

>>> numbers = [1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> square_root(numbers)
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]

定义 square_root(),它将列表 numbers 作为参数。在 square_root() 函数内部创建一个名为 result 的空列表,并开始 for 循环遍历 numbers。在每次迭代中,使用 math.sqrt() 计算当前数字的平方根,然后使用 .append() 将结果添加到 result 中。循环完成后,将返回结果列表。

这种填充列表的方式在 Python 中相当普遍。但是,不够 Pythonic,也不高效。Python 中提供了一个列表推导式(list comprehension),具体请看下面内容。

使用列表推导式可以将 square_root() 重新实现,具体如下:

>>> import math

>>> def square_root(numbers):
...     return [math.sqrt(number) for number in numbers]
...

>>> numbers = [1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> square_root(numbers)
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0]

这种新的实现在性能方面比上一个更高效。

完整命令: ...
函数就是一段可以重复多次调用的代码,通过输入的参数值,返回需要的结果。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供 ...
Python 使用 Redis 采用 redis 模块,该模块采用直连模式和连接池模式。redis-py 提供 Redis 和 Strict ...
Python中有个特殊的模块builtins,该模块无需导入便可使用,其中包含了许多内置函数和类。chr()用于将给定的ASCII码值转换为 ...
Linux 创建 Python 虚拟环境有很多种方式,有 virtualenv、virtualenvwrapper、通过 conda 安装以 ...