Python 简明教程
Python - Copy Arrays
在 Python 中,复制数组是指创建包含原始数组所有元素的新数组的过程。此操作可以使用赋值运算符 (=) 和 deepcopy() 方法完成。在本章中,我们将讨论如何 copy an array object to another 。但是,在进入详情之前,让我们简要讨论数组。
Python 的内置序列类型,即 list 、 tuple 和 string 是按索引排列的项集合。但是,与 C/C++、Java 等语言中的数组不同,它们不是同构的,这意味着这些类型的集合中的元素可能属于不同类型。Python 的 array 模块可帮助你创建类似于 Java 数组的对象。
Python arrays 可以是字符串、整数或浮点型。array 类构造函数的使用方式如下:
import array
obj = array.array(typecode[, initializer])
其中,类型代码可以是表示数据类型的字符常量。
Copy Arrays Using Assignment Operator
我们可以使用赋值运算符 (=) 将一个数组分配给另一个数组。但是,此类赋值不会在内存中创建新数组。相反,它会创建一个对同一数组的新引用。
Example
在以下示例中,我们使用赋值运算符在 Python 中复制数组。
import array as arr
a = arr.array('i', [110, 220, 330, 440, 550])
b = a
print("Copied array:",b)
print (id(a), id(b))
它将生成以下 output −
Copied array: array('i', [110, 220, 330, 440, 550])
134485392383792 134485392383792
检查 a 和 b 的 id()。相同的 id 值可以确认简单的赋值不会创建副本。由于“a”和“b”引用同一数组对象,因此数组“a”中的任何更改也会反映在“b”中:
a[2] = 10
print (a,b)
它将生成以下 output −
array('i', [110, 220, 10, 440, 550]) array('i', [110, 220, 10, 440, 550])
Copy Arrays Using Deep Copy
若要创建数组的另一个物理副本,我们将使用 Python 库中的另一个模块,名为 copy,并使用该模块中的 deepcopy() 函数。深度复制会构建一个新的复合对象,然后将原始对象中找到的对象的副本递归插入到这个复合对象中。
Example
以下示例演示如何在 Python 中复制数组:
import array as arr
import copy
a = arr.array('i', [110, 220, 330, 440, 550])
b = copy.deepcopy(a)
print("Copied array:",b)
执行后,将产生以下 output :
Copied array: array('i', [110, 220, 330, 440, 550])
现在检查 "a" 和 "b" 的 id()。你会发现 id 是不同的。
print (id(a), id(b))
它将生成以下 output −
2771967069936 2771967068976
这证明创建了一个新对象 "b",它实际上是 "a" 的副本。如果我们在 "a" 中更改一个元素,它不会反映在 "b" 中。
a[2]=10
print (a,b)
它将生成以下 output −
array('i', [110, 220, 10, 440, 550]) array('i', [110, 220, 330, 440, 550])