Python - 陣列複製



在 Python 中,複製陣列是指建立一個新陣列,其中包含原始陣列的所有元素的過程。此操作可以使用賦值運算子(=)和 deepcopy() 方法來完成。在本章中,我們將討論如何**將陣列物件複製到另一個**。但在深入探討細節之前,讓我們簡要地討論一下陣列。

Python 的內建序列型別,即 列表元組字串,都是專案的索引集合。但是,與 C/C++、Java 等中的陣列不同,它們不是同構的,這意味著這些型別的集合中的元素可能屬於不同的型別。Python 的 array 模組可以幫助您建立類似於 Java 陣列的物件。

Python 陣列 可以是字串、整數或浮點數型別。array 類的建構函式使用方法如下:

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

其中,typecode 可以是表示資料型別的字元常量。

使用賦值運算子複製陣列

我們可以使用賦值運算子(=)將一個數組賦值給另一個數組。但是,這種賦值不會在記憶體中建立新的陣列。相反,它會建立一個對同一陣列的新引用。

示例

在下面的示例中,我們使用賦值運算子在 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))

它將產生以下**輸出**:

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)

它將產生以下**輸出**:

array('i', [110, 220, 10, 440, 550]) array('i', [110, 220, 10, 440, 550])

使用深複製複製陣列

要建立陣列的另一個物理副本,我們使用 Python 庫中的另一個模組,名為 copy,並使用該模組中的 deepcopy() 函式。深複製會構造一個新的複合物件,然後遞迴地將原始物件中找到的物件的副本插入到該物件中。

示例

以下示例演示瞭如何在 Python 中複製陣列:

import array as arr
import copy
a = arr.array('i', [110, 220, 330, 440, 550])
b = copy.deepcopy(a)
print("Copied array:",b)

執行後,它將產生以下**輸出**:

Copied array: array('i', [110, 220, 330, 440, 550])

現在檢查一下“a”和“b”的id()。你會發現它們的id不同。

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

它將產生以下**輸出**:

2771967069936 2771967068976

這證明建立了一個新的物件“b”,它是“a”的實際副本。如果我們更改“a”中的元素,它不會反映在“b”中。

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

它將產生以下**輸出**:

array('i', [110, 220, 10, 440, 550]) array('i', [110, 220, 330, 440, 550])
廣告