在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() 函數建立真正的深度複製,為嵌套列表的所有層級遞歸建立新物件。副本所做的變更不會影響原始資料。
import copy b = copy.deepcopy(a) b[0][0] = 6 # Modifies b, but a remains untouched
透過採用這些技術,您可以建立提供隔離的不可變巢狀列表,從而防止對原始資料結構進行意外修改。
以上是如何在 Python 中建立真正不可變的巢狀清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!