Python深拷貝 淺拷貝 引用

2021-10-04 01:17:01 字數 1062 閱讀 8633

列表巢狀

如果想拷貝之後賦值的變數不想影響之前的列

表變數import copy

反之copy

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# author:mxl time:2020/3/17

import copy

a=[1,2,3]

b=["a",a]

print("a的初始值為: " + str(a))

print("b的初始值為: " + str(b))

print("*****=b的引用*****===")

print("以下做修改b變數引用的a的子集操作")

b[1][0]="b"

print("修改b變數引用的a的子集後的a的值"+ str(a))

print("修改b變數引用的b的值"+ str(b))

print("*****=淺拷貝*****===")

c=b.copy()

print("變數a的值為:"+ str(a))

print("淺拷貝c的值:"+ str(c))

print("*****=深拷貝*****===")

d=copy.deepcopy(b)

print("變數a的值為:"+ str(a))

print("深拷貝c的值:"+ str(d))

a的初始值為: [1, 2, 3]

b的初始值為: ['a', [1, 2, 3]]

*****=b的引用*****===

以下做修改b變數引用的a的子集操作

修改b變數引用的a的子集後的a的值['b', 2, 3]

修改b變數引用的b的值['a', ['b', 2, 3]]

*****=淺拷貝*****===

變數a的值為:['b', 2, 3]

淺拷貝c的值:['a', ['b', 2, 3]]

*****=深拷貝*****===

變數a的值為:['b', 2, 3]

深拷貝c的值:['a', ['b', 2, 3]]

python 引用,淺拷貝,深拷貝

引用 當物件是不可變型別的時候,int float double string tuple 純tuple 遇到 引用 問題時,雖然起初兩個變數指向同乙個記憶體位址,但是改變了其中乙個值,並不會影響另外乙個 會重新開闢記憶體位址 當物件是可變型別的時候,list dic,遇到 引用 問題,會一直共享一...

Python引用 淺拷貝 深拷貝

1 概念 深拷貝 將父和子的值都進行傳遞,無論怎麼去修改源變數,深拷貝的變數都和源變數無關 2 引用 我們建立乙個變數a,通過引用將a賦值給變數b,使用id 檢視變數位址,a與b得位址一致,可見兩者此時指向同意記憶體位址,當我們改變a得值時,b得值也會變化。引用示例 a 1 b a print id...

Python 引用 淺拷貝 深拷貝解析

1 的作用。僅僅是位址的引用,當原列表或者新列表中任意元素改變,均會對另外乙個產生影響 引用 本例中屬於位址的引用,其中a和b共用同一塊記憶體 當修改共用記憶體中的任意的內容是時,均會影響到另外的內容 a 0,1,2,3,4 b a 修改a 0 後,a 0 和b 0 都會改變 a 0 10 prin...