我正在使用 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/