具體的註解我已經寫在了程式裡面:通俗的解釋了python裡面的淺拷貝與深拷貝的不同,請看程式。
# -*- coding: utf-8 -*程式設計客棧-
import numpy as np
import copy as cp
import matplotlib.pyplot as plt
import time
import math
fig = plt.figure()
ax = fig.add_subplot(241)
# 定義乙個多維陣列
x = np.array([[1, 2, 3],
[4, 5, 6]])
print('x:{}'.format(x))
ax.plot(x)
ax1 = fig.ad程式設計客棧d_subplot(242)
# 首先看一下淺拷貝,將x拷貝(賦值)給y
y = x
print('y:{}'.format(y))
ax1.plot(y)
# 改變一下y中的任意乙個索引的值,可以看到x也隨著y一起改變了,
# 這就是淺www.cppcns.com拷貝,原陣列隨著拷貝的物件的改變而改變了。
y[0, 0] = 9
print('y改變值:')
print(y)
ax2 = fig.add_subplot(243)
ax2.plot(y)程式設計客棧
print('x的值在y改變之後:')
print(x)
ax3 = fig.add_subplot(244)
ax3.plot(x)
# 下面來看一下深拷貝,py裡面首先要匯入copy這個包,這裡用cp表示。
x = np.array([[1, 2, 3],
[4, 5, 6]])
print('\n\nx:{}'www.cppcns.com.format(x))
ax4 = fig.add_subplot(245)
ax4.plot(x)
y = cp.copy(x)
print('y:{}'.format(y))
ax5 = fig.add_subplot(246)
ax5.plot(y)
# 隨意改變y的某乙個索引,可以看到,y改變了,但是x還是它自己
y[0, 0] = 9
print('y改變值:')
print(y)
ax6 = fig.add_subplot(247)
ax6.plot(y)
print('x的值在y改變之後:')
print(x)
ax7 = fig.add_subplot(248)
ax7.plot(x)
plt.show()
本文標題: python中的陣列賦值與拷貝的區別詳解
本文位址:
python中的深淺拷貝與賦值。
賦值 賦值就是乙個變數引用乙個變數的值。這兩個變數共用乙個記憶體位址。當使用可變資料結構時 如 list,dict,set 其中乙個變數的值改變,會使另乙個變數的值也發生改變,但記憶體位址不改變。a 1 2,3 b ab 1 4print id a a,id b b 1992269718152 1,...
python中的賦值與深淺拷貝
在python中,只有在int和字串,元組等不可變型別中,與深淺拷貝的結果一樣 因為其是不可變型別,都是連記憶體位址一起 複製 了。而在list,dict,set中,深淺拷貝並沒有複製 位址 複製 記憶體位址的結果就是,之後的操作會影響原來的物件。以下所有的內容都是基於記憶體位址來說的。1.int型...
Python中的賦值與深淺拷貝
鑑於對很多初學程式設計的小夥伴來說,對於賦值和深淺拷貝的用法有些疑問,所以我就結合python變數儲存的特性從記憶體的角度來談一談賦值和深淺拷貝 一些基本的定義 幾個術語的解釋 深淺拷貝的作用 對於不可變物件的深淺拷貝 不可變物件型別 這個不可變物件型別裡面不能包含可變物件型別,如元祖裡面包含列表就...