📅  最后修改于: 2020-07-14 10:57:02             🧑  作者: Mango
有时,需要重用任何对象,因此复制方法总是很有用的。Python用其语言提供了多种方法来实现这一目标。这篇特定的文章旨在演示列表中存在的复制方法。由于列表被广泛使用,因此它的副本也是必需的。
语法:list.copy()
参数:
无
返回:
返回列表的浅表副本。
浅拷贝意味着新列表中的任何修改都不会反映到原始列表中
代码1:演示list.copy()的工作
# Python 3代码演示list.copy()的工作
# 初始化list
lis1 = [ 1, 2, 3, 4 ]
# 使用copy()创建浅表副本
lis2 = lis1.copy()
# 打印新list
print ("创建的新列表是 : " + str(lis2))
# 将新元素添加到新列表
lis2.append(5)
# 添加新元素后打印列表旧列表中无变化
print ("添加新元素后的新列表 : " + str(lis2))
print ("将新元素添加到新列表后的旧列表 : " + str(lis1))
输出:
创建的新列表是 : [1, 2, 3, 4]
添加新元素后的新列表 : [1, 2, 3, 4, 5]
将新元素添加到新列表后的旧列表 : [1, 2, 3, 4]
深度复制与浅度复制:分析
深度复制意味着如果我们修改任何列表,则更改将在两个列表中反映出来,因为它们指向同一参考。而在浅表复制中,当我们在任何列表中添加元素时,只有该列表会被修改。
深层复制技术:
浅拷贝技术:
代码2:演示浅层和深层复制技术
# Python 3代码演示深层和浅层复制技术
import copy
# 初始化清单
lis1 = [ 1, 2, 3, 4 ]
# 使用浅拷贝技术创建浅拷贝
lis2 = lis1.copy()
lis3 = copy.copy(lis1)
lis4 = lis1[:]
# 将新元素添加到新列表
lis2.append(5)
lis3.append(5)
lis4.append(5)
# 添加新元素后打印列表旧列表中无变化
print ("使用创建的新列表 copy.copy() : " + str(lis2))
print ("使用创建的新列表 list.copy() : " + str(lis3))
print ("使用创建的新列表 slicing : " + str(lis4))
print ("将新元素添加到新列表后的旧列表 : " + str(lis1))
print ("\n")
# 使用深层复制技术创建深层复制
lis2 = lis1
lis3 = copy.deepcopy(lis1)
# 将新元素添加到新列表
lis2.append(5)
lis3.append(5)
# 添加新元素更改后的打印列表会反映在旧列表中
print ("使用创建的新列表 copy.deepcopy() : " + str(lis2))
print ("使用创建的新列表 = : " + str(lis3))
print ("将新元素添加到新列表后的旧列表 : " + str(lis1))
输出:
使用创建的新列表 copy.copy() : [1, 2, 3, 4, 5]
使用创建的新列表 list.copy() : [1, 2, 3, 4, 5]
使用创建的新列表 slicing : [1, 2, 3, 4, 5]
将新元素添加到新列表后的旧列表 : [1, 2, 3, 4]
使用创建的新列表 copy.deepcopy() : [1, 2, 3, 4, 5]
使用创建的新列表 = : [1, 2, 3, 4, 5]
将新元素添加到新列表后的旧列表 : [1, 2, 3, 4, 5]d