概述
参见英文答案 > Why can a function modify some arguments as perceived by the caller, but not others?????????????????????????????????????10个
我们来看一个简单的代码:
y = [1,2,3]
def plusOne(y):
for x in range(len(y)):
y[x] += 1
return y
print plusOne(y), y
a = 2
def plusOne2(a):
a += 1
return a
print plusOne2(a), a
‘y’的值发生变化但值’a’保持不变.我已经知道这是因为一个是可变的而另一个不是.但是如何更改代码以使函数不更改列表?
例如,要做类似的事情(为了简单起见,使用伪代码):
a = [1,2,3,...,n]
function doSomething(x):
do stuff with x
return x
b = doSomething(a)
if someOperation(a) > someOperation(b):
do stuff
编辑:抱歉,我在嵌套列表上有另一个问题.看到这段代码:
def change(y):
yN = y[:]
for i in range(len(yN)):
if yN[i][0] == 1:
yN[i][0] = 0
else:
yN[i][0] = 1
return yN
data1 = [[1],[1],[0],[0]]
data2 = change(data1)
在这里它不起作用.为什么?再说一遍:如何避免这个问题?我理解为什么它不起作用:yN = y [:]将y的值复制到yN,但值也是列表,因此对于列表中的每个列表,操作必须加倍.如何使用嵌套列表执行此操作?
最后
以上就是辛勤啤酒为你收集整理的python中not加变量是_函数更改列表值而不是Python中的变量值的全部内容,希望文章能够帮你解决python中not加变量是_函数更改列表值而不是Python中的变量值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复