python中的陣列賦值與拷貝的區別詳解

2022-09-27 07:54:11 字數 1442 閱讀 9229

具體的註解我已經寫在了程式裡面:通俗的解釋了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變數儲存的特性從記憶體的角度來談一談賦值和深淺拷貝 一些基本的定義 幾個術語的解釋 深淺拷貝的作用 對於不可變物件的深淺拷貝 不可變物件型別 這個不可變物件型別裡面不能包含可變物件型別,如元祖裡面包含列表就...