如何用append()函数向列表末尾添加元素
Admin 2022-08-12 群英技术资讯 1386 次浏览
append() 函数可以向列表末尾添加元素
语法
list.append( element )
参数
实例:向列表末尾添加一个元素
name_list = ['zhangsan', 'lisi', 'wangwu'] name_list.append('zhaoliu') print(name_list)
输出:
['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
需要注意的是, append() 函数添加的元素在列表的「末尾」而不是任意位置
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)]
使用 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]]
从输出结果可以发现,当添加的列表发生变化时,先前添加的内容也发生了改变,这会使程序出现意料之外的问题,我们使用 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
从输出结果可以看出,问题的原因就在引用地址上面。这里补充两个概念
使用 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]]
列表同步问题解决了
比如,添加列表时,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]
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
占位符,顾名思义就是插在输出里站位的符号。占位符是绝大部分编程语言都存在的语法, 而且大部分都是相通的, 它是一种非常常用的字符串
enumerate函数用于遍历序列中的元素以及它们的下标,多用于在for循环中得到计数,enumerate参数为可遍历的变量,如 字符串,列表等一般情况
break语句用于提前终止当前循环。放弃循环后,直接执行循环块下一个语句,就像C语言中的break语句一样。
文中详细整理了关于Python模块和包的相关知识点,刚入门Python的小伙伴们可以学习一下,有助于加深Python基础的理解.而且有详细说明及代码示例,需要的朋友可以参考下
Python中的continue语句将控制返回到当前循环的开头。当遇到continue语句时,循环将不执行当前迭代中剩余的语句,而直接下一次迭代开始。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008