我在Python中有一个函数:
def newk(kor, flds):
field=0.5*flds
knw=[]
for i in range(flds):
ktemp=kor
if ktemp[2]+i>field:
ktemp[2]-=(i-1)
else:
ktemp[2]+=i
knw+=[ktemp]
print knw
print ktemp
print kor, '\n'
return knw
称为:
knew=newk(kvals, folds)
我原来的kvals会因为某些原因被覆盖。Kvals是一个列表。 而且ktemp像knw假设的那样不断累积,而且它会螺旋 一切都好。我的输出如下所示:
[[0.05, 0.05, 0.166667]] [0.05, 0.05, 0.166667] [0.05, 0.05, 0.166667]
[[0.05, 0.05, 1.166667], [0.05, 0.05, 1.166667]] [0.05, 0.05, 1.166667] [0.05, 0.05, 1.166667]
[[0.05, 0.05, -0.8333330000000001], [0.05, 0.05, -0.8333330000000001], [0.05, 0.05, -0.8333330000000001]] [0.05, 0.05, -0.8333330000000001] [0.05, 0.05, -0.8333330000000001]
K point values are: [0.05, 0.05, -0.8333330000000001] (original kvals was
[0.05,0.05,0.166667]
)
但是我需要输出如下:knw是[[0.05, 0.05, 0.166667],[0.05, 0.05, 1.166667],[0.05, 0.05, -0.833333]
,kval是[0.05, 0.05, 0.166667]
另外,当我将循环中的ktemp=kor改为常数ktemp=[0.05,0.05,0.166667]时,一切都正常。你知道吗
当
ktemp=kor
时,两个名称指向同一列表对象,因此对ktemp
的修改与修改kor
相同。如果你想要一个列表的副本,你需要说ktemp = kor[:]
(假设kor
只是数字-如果你想要一个包含复杂对象的列表的“深度副本”,那是另一个问题)。你知道吗相关问题 更多 >
编程相关推荐