📜  Python list | copy

📅  最后修改于: 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]

深度复制与浅度复制:分析

深度复制意味着如果我们修改任何列表,则更改将在两个列表中反映出来,因为它们指向同一参考。而在浅表复制中,当我们在任何列表中添加元素时,只有该列表会被修改。
深层复制技术:

  • 使用copy.deepcopy()
  • 使用“ =”运算符

浅拷贝技术:

  • 使用copy.copy()
  • 使用list.copy()
  • 使用切片

代码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