python range()的问题

2024-10-03 17:17:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

def steps(low, hi, n):
rn = range(n)
newrn = rn
print rn #print 1
for x in rn[:]:
    print x
    newrn[x] = float(x)/n

diff = hi - low

print newrn 
print rn #print 2
for y in rn[:]:
    print y
    rn.insert(y, (newrn[y] * diff) + low)

return rn

由于某些原因,我第一次打印rn返回[0,1,2],但第二次打印返回[0,.333,.666]。为什么rn会改变?我只改变了新的,但是注册护士也变了。当它尝试运行rn.插入行。在

有什么帮助吗?在


Tags: 代码inforreturndefdiffrangern
2条回答

这就是python中变量的工作方式。在那里:

newrn = rn

您分配的是一个引用,而不是一个值(这有时很好,因为您不会将所有值复制到新列表中)。如果要使用相同值的新的单独列表,请执行以下操作:

^{pr2}$

问题是当你做这个分配时:newrn = rn。现在,newrnrn都指向同一个列表,因此当您修改其中一个时,您将同时修改这两个列表。在

用cd4{。在

相关问题 更多 >