gpt4 book ai didi

python - 用户定义的函数似乎是过去输入的两倍

转载 作者:行者123 更新时间:2023-12-01 00:37:07 31 4
gpt4 key购买 nike

使用我当前设置的代码,值似乎翻倍,我无法查明原因。

例如,我通过函数运行数组(E)并得到[5.569, 10.9536, 16.167, ...]然后当我稍后使用数组(G)再次运行该函数时突然(E) 现在将读取 [11.137, 21.90721, 32.3342, ...]

这些数字似乎是数组最初的数字和应该的数字的两倍。下面是正在使用的功能?出了什么问题??

脚本1:

    E = PyFunctions.za(c_v, 4)
F = PyFunctions.za(c_v, 6)
G = PyFunctions.zb(E, F, 2)

脚本2:

    def zb(e1, e2, p):
l1 = len(e1)
l2 = len(e2)

if l1 > l2:
e1 = e1[(-1 - l2) + 1:]
elif l2 > l1:
e2 = e2[(-1 - l1) + 1:]

e1p = e1
e1p[:] = [x * p for x in e1p]
e2p = e2
e2p[:] = [x * (p - 1) for x in e2p]

z = [0] * len(e1p)

for k in range(len(e1p)):
z[k] = e1p[k] - e2p[k]
return z

最佳答案

这是 Python aliasing 的效果。因为您将 E 作为 e1 传递给 zb(),所以 e1 正是 E,并在您所说的行上:

e1p = e1

您正在 e1e1p 之间建立别名关系,从而在 Ee1p 之间建立别名关系。然后,在下一行将 e1p 中的每个元素乘以 p:

e1p[:] = [x * p for x in e1p]

您实际上是在 E 上执行该操作(由于别名),因此 E 中的每个元素都将乘以 p > (您以 2 的形式传入),这就是 E 被加倍的原因。

如果您只想将 E副本传递到 zb() 中,则可以替换脚本 1 中的第三行与此:

G = PyFunctions.zb(E[:], F, 2)

关于python - 用户定义的函数似乎是过去输入的两倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57650387/

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