python - 程序中的数组

标签 python arrays python-3.x numpy for-loop

所以,首先我想声明我是 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

其中,对于某个 alphak,应该给我一个数组 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/

相关文章:

python - Pytorch-类型错误 : 'torch.Size' object cannot be interpreted as an integer

python - Python 3 中的 Django 问题 "super() argument 1 must be type, not WSGIRequest"

javascript - 如何检查包含另一个对象数组的对象数组是否具有属性

java - 操作 QAndroidJniObject 数组

java - 在我的 for 循环中获取 ArrayOutofBoundsException

python - 通过列表引用类实例

python - 消除 "Game"单例中的耦合和全局状态

python - 如何在 ubuntu 中的 virtualbox 安装的驱动器共享文件夹上创建 python3 virtualenv

python - 如何在plotly3.6中对条形图进行排序?

python - Python 中仅当所有 try 语句都成功时才运行语句