Python 复制数组

Python 复制数组

Python的内置序列类型,即列表、元组和字符串是索引集合。然而,与C/C++、Java等不同的是,它们不是同质的,也就是说这些类型的集合中的元素可能是不同类型的。Python的数组模块可以帮助您创建类似于Java的数组对象。在本章中,我们讨论如何将一个数组对象复制到另一个数组对象中。

Python的数组可以是字符串、整数或浮点数类型的。数组类构造函数的用法如下−

import array
obj = array.array(typecode[, initializer])

typecode 可以是一个表示数据类型的字符常量。

我们可以通过赋值操作符将一个数组分配给另一个数组。

a = arr.array('i', [1, 2, 3, 4, 5])
b=a.copy()

然而,这样的赋值操作不会在内存中创建一个新的数组。在Python中,变量只是内存中对象的标签或引用。因此,a是一个数组的引用,b也是如此。检查a和b的id()。相同的id值证实简单的赋值操作并不会创建副本。

import array as arr
a = arr.array('i', [1, 2, 3, 4, 5])
b=a
print (id(a), id(b))

它将产生以下 输出

2771967068656 2771967068656

因为”a”和”b”都指向同一个数组对象,所以对”a”的任何更改都会反映在”b”中。

a[2]=10
print (a,b)

这将产生以下 输出

array('i', [1, 2, 10, 4, 5]) array('i', [1, 2, 10, 4, 5])

为了创建数组的另一个物理副本,在Python库中使用另一个模块,名为copy,并使用该模块中的deepcopy()函数。深复制构造一个新的复合对象,然后递归地在其中插入原始对象的副本。

import array, copy
a = arr.array('i', [1, 2, 3, 4, 5])
import copy
b = copy.deepcopy(a)

现在检查” a “和” b “的id()。您会发现它们的id是不同的。

print (id(a), id(b))

它将产生以下内容 输出

2771967069936 2771967068976

这证明了一个新对象“b”被创建,并且是“a”的一个实际副本。如果我们在“a”中改变一个元素,则不会反映在“b”中。

a[2]=10
print (a,b)

它将产生以下 输出

array('i', [1, 2, 10, 4, 5]) array('i', [1, 2, 3, 4, 5])

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程