首页 > 解决方案 > 从返回多个值的函数中选择单个输出(python)

问题描述

所以我有一个返回 3 个变量的函数,如果有意义的话,我想使用一个 for 循环来获取每个变量的数组。这是我到目前为止所拥有的,我得到了错误:

ValueError:要解包的值太多(预期为 3)

Import numpy as np
def position(min, max):
    x=np.random.uniform(min,max)
    y=np.random.uniform(min,max)
    z=np.random.uniform(min,max)
return x,y,z

x,y,z=[position(0,100) for _ in range(1000)]

请注意,我不能在函数本身内移动循环,因为我还需要能够调用函数来生成单个值。有没有可以用来实现我想要的功能(3 个维度为 1000 的数组)?

标签: pythonfunctionloops

解决方案


你想要的是zip结果数组:

x, y, z = zip(*[position(0,100) for _ in range(1000)])

但这会给你 3 个元组。如果你想要 numpy 数组,你必须明确地转换它们:

x, y, z = (np.array(i) for i in zip(*[position(0,100) for _ in range(1000)]))

推荐阅读