所以,首先我想声明我是 Python 的新手,所以这可能是一个简单的问题。我正在锻炼我的编程技能,并尝试编写一个简单的程序。它是这样的:
def cal(alpha, k):
sqrt = np.zeros(len(alpha))
for i in range(len(alpha)):
sqrt[i] = np.sqrt(alpha[i])*k
return sqrt
其中,对于某个 alpha
和 k
,应该给我一个数组 sqrt[]
。例如,如果 alpha = [1,4,9]
和 k = 3
,答案应该是 [3,6,9]
.但是,当在 Python 中执行时,它会给出 [3,0,0]
。
我的问题是:为什么?我知道我可以得到我想要的,只要我简单地投入
def cal(alpha, k):
sqrt = np.zeros(len(alpha))
sqrt= np.sqrt(alpha)*k
return sqrt
但我想知道我的推理错误在哪里。
谢谢!
最佳答案
缩进在 Python 中很重要。一旦您的函数到达 return
语句,它就会停止并返回一个对象。
在您的 for
循环中,return
在第一次迭代结束但在第二次迭代开始之前得到满足,这就是为什么您只找到第一个值填充的原因在 [3, 0, 0]
中。
因此,简单地取消最后一行的缩进。这将确保 return
仅在您的 for
循环完成后被处理:
import numpy as np
def cal(alpha, k):
sqrt = np.zeros(len(alpha))
for i in range(len(alpha)):
sqrt[i] = np.sqrt(alpha[i])*k
return sqrt
cal([1, 4, 9], 3)
# array([ 3., 6., 9.])
关于python - 程序中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51324166/