Python列表append()函数使用方法详解

 更新时间:2022年06月02日 09:39:02   作者:士别三日wyx  
python中的append()函数是在列表末尾添加新的对象,且将添加的对象最为一个整体,下面这篇文章主要给大家介绍了关于Python列表append()函数使用方法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

1. 基本使用

append() 函数可以向列表末尾添加元素

语法

list.append( element )

参数

  • element:任何类型的元素

实例:向列表末尾添加一个元素

name_list = ['zhangsan', 'lisi', 'wangwu']
name_list.append('zhaoliu')
print(name_list)

输出:

['zhangsan', 'lisi', 'wangwu', 'zhaoliu']

需要注意的是, append() 函数添加的元素在列表的「末尾」而不是任意位置

2. 任意类型元素

append() 函数可以向列表末尾添加「任意类型」的元素

实例:添加普通类型(数值、字符串)元素

list1 = ['zhangsan', 'lisi', 'wangwu']
list1.append(1)  # 添加整形
print(list1)
list1.append('str')  # 添加字符型
print(list1)

输出:

['zhangsan', 'lisi', 'wangwu', 1]
['zhangsan', 'lisi', 'wangwu', 1, 'str']

实例:添加集合类型(列表,元祖)元素

list1 = ['zhangsan']
list1.append([1,2,3])  # 添加列表
print(list1)
list1.append((4,5,6))  # 添加元祖
print(list1)

输出:

['zhangsan', [1, 2, 3]]
['zhangsan', [1, 2, 3], (4, 5, 6)]

3. 列表同步

使用 append() 函数添加列表时,是添加列表的「引用地址」而不是添加列表内容,当被添加的列表发生变化时,添加后的列表也会同步发生变化。

list1 = ['zhangsan']
a = [1,2,3]
list1.append(a)  # 列表list1添加列表a
print(list1)
a.append(4)  # 列表a发生变化
list1.append(a)
print(list1)  # 列表list1也会同步变化

输出:

['zhangsan', [1, 2, 3]]
['zhangsan', [1, 2, 3, 4], [1, 2, 3, 4]]

3.1 原理剖析

从输出结果可以发现,当添加的列表发生变化时,先前添加的内容也发生了改变,这会使程序出现意料之外的问题,我们使用 id() 函数验证一下

list1 = ['zhangsan']
a = [1,2,3]
list1.append(a)
print(a, id(a))  # 列表a的引用地址
print(list1[1], id(list1[1]))  # 添加到列表后的引用地址

输出:

[1, 2, 3] 2992145244608
[1, 2, 3] 2992145244608

3.2 解决方案

从输出结果可以看出,问题的原因就在引用地址上面。这里补充两个概念

  • 浅拷贝:拷贝这个对象的引用地址
  • 深拷贝:拷贝对象的内容

使用 copy.deepcopy() 函数深拷贝列表的内容而不是列表的引用地址

list1 = ['zhangsan']
a = [1,2,3]
list1.append(copy.deepcopy(a))
print(a, id(a))  # 列表a的引用地址
print(list1[1], id(list1[1]))  # 添加到列表后的引用地址

输出:

[1, 2, 3] 1963457096704
[1, 2, 3] 1963458936640

由输出结果可以确定,添加后的列表不再引用源列表的地址

使用「深拷贝」添加列表的内容而不是引用地址,从而解决列表同步的问题

list1 = ['zhangsan']
a = [1,2,3]
list1.append(copy.deepcopy(a))  # 深拷贝列表a
print(list1)
a.append(4)  # 列表a发生变化
list1.append(copy.deepcopy(a))  # 深拷贝列表a
print(list1)  # 列表list1不再同步变化

输出:

['zhangsan', [1, 2, 3]]
['zhangsan', [1, 2, 3], [1, 2, 3, 4]]

列表同步问题解决了

4. append()与extend()的区别

  1. append添加的是元素本身,而extend添加的是元素的值
  2. append可以添加所有类型元素,而extend只能添加序列

比如,添加列表时,append会添加整个列表,而extend只会添加列表中的值

list1 = ['zhangsan', 'lisi', 'wangwu']
list2 = ['zhangsan', 'lisi', 'wangwu']
list1.append([1,2,3])
print('append添加整个列表:', list1)
list2.extend([1,2,3])
print('extend添加列表的值:', list2)

输出:

append添加整个列表: ['zhangsan', 'lisi', 'wangwu', [1, 2, 3]]
extend添加列表的值: ['zhangsan', 'lisi', 'wangwu', 1, 2, 3]

总结

到此这篇关于Python列表append()函数使用方法的文章就介绍到这了,更多相关Python列表append()使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python读取图片并修改格式与大小的方法

    python读取图片并修改格式与大小的方法

    这篇文章主要为大家详细介绍了python读取图片并修改格式与大小的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 通过实例浅析Python对比C语言的编程思想差异

    通过实例浅析Python对比C语言的编程思想差异

    这篇文章主要介绍了通过实例浅析Python对比C语言的编程思想差异,作为面向对象和面向过程的编程语言代表,二者的对比可谓经典,需要的朋友可以参考下
    2015-08-08
  • Python numpy数组转置与轴变换

    Python numpy数组转置与轴变换

    这篇文章主要介绍了Python numpy数组转置与轴变换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Python httpx库入门指南(最新推荐)

    Python httpx库入门指南(最新推荐)

    Httpx 是一个用于发送 HTTP 请求的 Python 库,它提供了简单易用的 API,可以轻松地发送 GET、POST、PUT、DELETE 等请求,并接收响应,下面介绍下Python httpx库入门指南,感兴趣的朋友一起看看吧
    2023-12-12
  • Python内置的HTTP协议服务器SimpleHTTPServer使用指南

    Python内置的HTTP协议服务器SimpleHTTPServer使用指南

    这篇文章主要介绍了Python内置的HTTP协议服务器SimpleHTTPServer使用指南,SimpleHTTPServer本身的功能十分简单,文中介绍了需要的朋友可以参考下
    2016-03-03
  • 基于python修改srt字幕的时间轴

    基于python修改srt字幕的时间轴

    这篇文章主要介绍了基于python修改srt字幕的时间轴,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python3实现并发检验代理池地址的方法

    Python3实现并发检验代理池地址的方法

    这篇文章主要介绍了Python3实现并发检验代理池地址的方法,实例分析了Python3基于线程的代理检验操作相关技巧,需要的朋友可以参考下
    2016-09-09
  • python模拟鼠标点击和键盘输入的操作

    python模拟鼠标点击和键盘输入的操作

    这篇文章主要介绍了python模拟鼠标点击和键盘输入的操作,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • PyTorch中常用的激活函数的方法示例

    PyTorch中常用的激活函数的方法示例

    这篇文章主要介绍了PyTorch中常用的激活函数的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python网站验证码识别

    Python网站验证码识别

    这篇文章主要介绍了Python网站验证码识别的相关资料,需要的朋友可以参考下
    2016-01-01

最新评论