append() 函数可以向列表末尾添加元素
list.append( element )
- 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)
print(list1)
a.append(4)
list1.append(a)
print(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))
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))
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))
print(list1)
a.append(4)
list1.append(copy.deepcopy(a))
print(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]
Original: https://blog.csdn.net/wangyuxiang946/article/details/122142534
Author: 士别三日wyx
Title: Python 列表 append()函数使用详解
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/668055/
转载文章受原作者版权保护。转载请注明原作者出处!