gpt4 book ai didi

python - 在 python 3.x 的 for 循环中,对象是否更改为不可变的?

转载 作者:行者123 更新时间:2023-11-28 02:21:23 25 4
gpt4 key购买 nike

在下面粘贴的代码(这是 python 3 代码)中,我希望 for 循环更改原始对象(即我希望 NSTEPx 已被 for 循环更改)。由于列表和数组是可变的,我应该通过变量“数据”引用它来编辑对象。但是,在运行这段代码并调用 NSTEPx 之后,它并没有改变。有人可以解释这是为什么吗?我有 C++ 背景,可变对象和不可变对象(immutable对象)的概念是我最近才了解的细微差别,或者我是这么认为的。

代码如下:

NSTEPx = np.array(NSTEPx)
TIMEx = np.array(TIMEx)
TEMPx = np.array(TEMPx)
PRESSx = np.array(PRESSx)
Etotx = np.array(Etotx)
EKtotx = np.array(EKtotx)
EPtotx = np.array(EPtotx)
VOLUMEx = np.array(VOLUMEx)
alldata = [NSTEPx,TIMEx,TEMPx, PRESSx, Etotx, EKtotx, EPtotx]
for data in alldata:
temp = data[1001:-1]
data = np.insert(data,0,temp)
data = np.delete(data,np.s_[1001:-1])

最佳答案

在您的循环中,data 指的是一个数组(某个对象)。引用的对象是可变的。变量 data 也可以更改为引用其他内容,但这不会更改 alldata 中的内容(引用对象的值)或其内容的变量隐式复制以构造 alldata。因此,您所更改的只是一个局部变量(从 alldata 隐式复制)来引用新创建的数组。任何其他引用值都没有改变,仍然引用旧数组。

关于python - 在 python 3.x 的 for 循环中,对象是否更改为不可变的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32342761/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com