标题:Python中浅拷贝的四种实现方法小结
介绍:Python中,拷贝对象有两种方式,即浅拷贝和深拷贝。浅拷贝只拷贝最外层的对象本身,而不会拷贝其内容,也就是说,新的对象共享旧对象内部元素。本文将详细讲解Python中浅拷贝的四种实现方法。
一、使用切片实现浅拷贝
list1 = [1, 2, 3, [4, 5]]
list2 = list1[:]
切片操作可以对列表进行浅拷贝。上述代码中,list2
只是引用了 list1
中的对象本身,并没有拷贝 list1
中的列表元素。如果原列表中有可变对象,如上例中的列表 [4,5]
,那么新列表中的该元素仍将和旧列表元素指向同一地址,对其中一个元素进行修改时,另一个元素也随之修改。
示例代码:
list1 = [1, 2, 3, [4, 5]]
list2 = list1[:]
list2[3][0] = 6
print(list1) # [1, 2, 3, [6, 5]]
print(list2) # [1, 2, 3, [6, 5]]
二、使用copy()方法实现浅拷贝
list1 = [1, 2, 3, [4, 5]]
list2 = list1.copy()
列表对象有一个 copy()
方法,调用该方法可以完成浅拷贝操作。
示例代码:
list1 = [1, 2, 3, [4, 5]]
list2 = list1.copy()
list2[3][0] = 6
print(list1) # [1, 2, 3, [6, 5]]
print(list2) # [1, 2, 3, [6, 5]]
三、使用工厂函数list()实现浅拷贝
list1 = [1, 2, 3, [4, 5]]
list2 = list(list1)
list() 函数可以将可迭代对象转换为列表,如果将原列表传递给 list()
函数,可以使用该函数完成浅拷贝。
示例代码:
list1 = [1, 2, 3, [4, 5]]
list2 = list(list1)
list2[3][0] = 6
print(list1) # [1, 2, 3, [6, 5]]
print(list2) # [1, 2, 3, [6, 5]]
四、使用copy模块中的copy()函数实现浅拷贝
import copy
list1 = [1, 2, 3, [4, 5]]
list2 = copy.copy(list1)
Python 中的 copy 模块提供了 copy()
函数,使用该函数可以完成列表浅拷贝操作。
示例代码:
import copy
list1 = [1, 2, 3, [4, 5]]
list2 = copy.copy(list1)
list2[3][0] = 6
print(list1) # [1, 2, 3, [6, 5]]
print(list2) # [1, 2, 3, [6, 5]]
总结:
本文介绍了 Python 中浅拷贝的四种实现方法,包括使用切片、copy() 方法、list() 函数和 copy 模块中的 copy() 函数。其中前三种方法使用起来非常简单,也是大多数情况下使用的方式;copy 模块中的 copy() 函数虽然用的较少,但它是可以深度拷贝各种对象的,是个十分有用的函数。