Python基础详解之列表复制
什么是列表复制
列表复制是指将一个列表中的元素复制到另一个列表。Python中复制列表分为浅复制和深复制两种方法。
- 浅复制: 将原列表中的对象的引用复制到新列表中,新列表的元素和原列表的元素对象是同一个对象,修改其中一个对象会影响另一个对象。
- 深复制: 重新创建一个与原列表相同的列表,其元素对象全部重新创建,新对象与原对象互不影响。
我们通常在编写程序时,为了提高代码的可读性和可维护性,会进行列表复制。
如何进行列表复制
1. 使用切片进行浅复制
通过切片[:]的方式就可以完成复制,代码示例如下:
# 浅复制,使用切片复制列表
old_list = [1, 2, [3, 4]]
new_list = old_list[:]
print("old_list:", old_list)
print("new_list:", new_list)
# 修改new_list中的元素
new_list[2][0] = 5
# 查看结果,可以发现修改new_list中的元素也修改了old_list中的元素
print("old_list:", old_list)
print("new_list:", new_list)
输出结果:
old_list: [1, 2, [3, 4]]
new_list: [1, 2, [3, 4]]
old_list: [1, 2, [5, 4]]
new_list: [1, 2, [5, 4]]
在上述代码中,我们首先将old_list赋值给new_list。然后我们修改了new_list中的元素,发现old_list中的元素也被修改了。这是因为old_list和new_list中的第3个元素指向的都是同一个对象,因此修改一个会影响另一个。
2. 使用copy()方法进行浅复制
除了使用切片方法可以进行浅复制,还可以使用copy()方法,代码示例如下:
# 浅复制,使用copy()方法复制列表
old_list = [1, 2, [3, 4]]
new_list = old_list.copy()
print("old_list:", old_list)
print("new_list:", new_list)
# 修改new_list中的元素
new_list[2][1] = 5
# 查看结果,可以发现修改new_list中的元素也修改了old_list中的元素
print("old_list:", old_list)
print("new_list:", new_list)
输出结果:
old_list: [1, 2, [3, 4]]
new_list: [1, 2, [3, 4]]
old_list: [1, 2, [3, 5]]
new_list: [1, 2, [3, 5]]
这个例子的输出与第一个例子类似,不再赘述。
3. 使用copy模块进行深复制
使用copy模块可以实现深复制,代码示例如下:
# 深复制,使用copy模块复制列表
import copy
old_list = [1, 2, [3, 4, [5, 6]]]
new_list = copy.deepcopy(old_list)
print("old_list:", old_list)
print("new_list:", new_list)
# 修改new_list中的元素
new_list[2][2][1] = 7
# 查看结果,可以发现修改new_list中的元素并不会影响old_list中的元素
print("old_list:", old_list)
print("new_list:", new_list)
输出结果:
old_list: [1, 2, [3, 4, [5, 6]]]
new_list: [1, 2, [3, 4, [5, 6]]]
old_list: [1, 2, [3, 4, [5, 6]]]
new_list: [1, 2, [3, 4, [5, 7]]]
我们可以看到,在使用copy模块的deepcopy()方法进行复制后,修改新列表中的元素并不会影响旧列表中的元素,这是因为copy模块会重新复制对象,从而达到深复制的效果。
总结
本篇文章介绍了Python中列表复制的两种方法:浅复制和深复制。我们可以根据实际需要选择适合的方法。如果元素中没有可变对象,那么浅复制就足够了。如果元素中包含可变对象,最好使用深复制,以免修改新对象对原对象产生影响。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python基础详解之列表复制 - Python技术站