在我的代码粘贴bellow(这是python3代码)中,我期望for循环更改原始对象(即我期望NSTEPx已被for循环更改)。由于列表和数组是可变的,我应该通过变量“data”引用对象来编辑它。但是,在运行了这段代码并调用了NSTEPx之后,它并没有被更改。有人能解释这是为什么吗?我来自C++的背景,而可变不变的对象的概念是我最近才理解的,或者我认为的细微差别。你知道吗
代码如下:
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])
Python没有赋值!
data = value
严格来说是一个绑定操作,而不是赋值。这在E.C++ +P>Python变量就像一个标签,或者一个黄色的便签:你可以把它放在某物上,或者移到其他地方;它不会(从不)改变某物(对象)它是一个。 =-运算符确实移动标签;它“绑定”标签。虽然我们通常说赋值,但它实际上不是C的赋值(基本上是一个内存地址)
要在Python中更改值,需要一个方法:
aLabel.do_update()
,will(通常)changeself,即对象本身。 注意aList[....]
是一个方法!你知道吗因此,要更改数据:更改它(秒)。不要在其上放置其他标签,也不要在其他数据上放置现有标签!你知道吗
希望这能解释你的问题
在循环中,
data
引用数组(某个对象)。引用的对象是可变的。变量data
也可以更改为引用其他内容,但这不会更改alldata
(引用对象的值)中的内容或隐式复制其内容以构造alldata
的变量。因此,您所更改的只是一个局部变量(隐式地从alldata
复制)来引用新创建的数组。任何其他引用值都将保持不变,并且仍然引用旧数组。你知道吗相关问题 更多 >
编程相关推荐