gpt4 book ai didi

python - 如何在 Python 中将列表作为函数的输入传递

转载 作者:太空狗 更新时间:2023-10-29 17:52:01 25 4
gpt4 key购买 nike

我正在使用 Python,并且我有一个将列表作为参数的函数。例如,我使用以下语法,

def square(x,result= []):
for y in x:
result.append=math.pow(y,2.0)
return result

print(square([1,2,3]))

并且输出是 [1] 只有在我应该得到 [1,4,9] 的地方。

我做错了什么?

最佳答案

为什么不完全回避这个问题呢?

def square(vals):
return [v*v for v in vals]

编辑:正如一些人指出的那样,第一个问题是您正在使 for 循环短路。您的返回应该在循环之后出现,而不是在循环中。

下一个问题是您对 list.append 的使用 - 您需要调用它,而不是分配给它,即 result.append(y*y)result.append = y*y 而是用数值覆盖该方法,下次您尝试调用它时可能会抛出错误。

一旦你解决了这个问题,如果你重复调用你的函数,你会发现另一个不太明显的错误:

print(square([1,2,3])     # => [1, 4, 9]
print(square([1,2,3]) # => [1, 4, 9, 1, 4, 9]

因为您传递了一个可变项(列表)作为默认值,所以对该默认项的所有进一步使用都指向相同的原始列表

相反,尝试

def square(vals, result=None):
if result is None:
result = []
result.extend(v*v for v in vals)
return result

关于python - 如何在 Python 中将列表作为函数的输入传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35120620/

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