gpt4 book ai didi

函数中的python元素明智操作

转载 作者:行者123 更新时间:2023-11-28 22:19:02 26 4
gpt4 key购买 nike

在 python 中,我试图在函数内更改 np 数组的值

def function(array):
array = array + 1
array = np.zeros((10, 1))
function(array)

对于数组作为函数参数,它应该是一个引用,我应该可以在函数内部修改它的内容。

array = array + 1 执行逐元素操作,将数组中的每个元素加一,因此它会更改内部值。

但是函数调用后数组实际上并没有改变。我猜测程序认为我正在尝试更改引用本身,而不是数组的内容,因为元素明智操作的语法。有什么办法让它做预期的行为吗?我不想遍历单个元素或使函数返回新数组。

最佳答案

这一行:

array = array + 1

… 确实执行逐元素操作,但它执行的操作是创建一个新数组,每个元素都递增。将该数组赋值回局部变量 array 并没有做任何有用的事情,因为该局部变量即将消失,而您还没有做任何改变同名全局变量的事情,

另一方面,这一行:

array += 1

…执行就地递增所有元素的逐元素操作,这可能是您在这里想要的。


在 Python 中,可变集合只是允许,而不是必需,以这种方式处理 += 语句;它们可以array = array + 1 一样处理它(像 str 这样的不可变类型)。但是像 list 这样的内置类型,以及像 np.array 这样最流行的第三方类型,做你想做的。

关于函数中的python元素明智操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50092701/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com