首頁  >  文章  >  後端開發  >  如何在 Python 中建立真正不可變的巢狀清單?

如何在 Python 中建立真正不可變的巢狀清單?

Linda Hamilton
Linda Hamilton原創
2024-11-20 01:19:03982瀏覽

How to Create Truly Immutable Nested Lists in Python?

在Python 中建立不可變的巢狀清單

在Python 中複製資料結構可能很棘手,尤其是在處理巢狀列表時。使用 [:] 的淺拷貝保留對嵌套元素的引用,從而導致不必要的修改。

要解決此問題,在建立巢狀清單的副本時,請考慮以下技術:

  • 淺拷貝:

對於一維列表,[:] 運算子建立引用的淺拷貝記憶體中相同的元素。修改副本不會影響原始。

a = [1, 2]
b = a[:]
b[0] = 3  # Modifies b, but a remains unchanged
  • 使用切片進行深度複製:

對於嵌套列表,單獨切片是不夠的深拷貝。當它建立一個新清單時,嵌套元素仍然是對原始元素的參考。

a = [[1, 2], [3, 4]]
b = a[:]  # Shallow copy
b[0][0] = 5  # Modifies b and a
  • 使用Copy.deepcopy() 深度複製:

copy.deepcopy() 函數建立真正的深度複製,為嵌套列表的所有層級遞歸建立新物件。副本所做的變更不會影響原始資料。

import copy
b = copy.deepcopy(a)
b[0][0] = 6  # Modifies b, but a remains untouched

透過採用這些技術,您可以建立提供隔離的不可變巢狀列表,從而防止對原始資料結構進行意外修改。

以上是如何在 Python 中建立真正不可變的巢狀清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn