我是靠谱客的博主 辛勤啤酒,最近开发中收集的这篇文章主要介绍python中not加变量是_函数更改列表值而不是Python中的变量值,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

参见英文答案 > 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中的变量值所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部