从返回多个值的函数中选择单个输出(python)

时间:2021-03-24 15:57:31

标签: python function loops

所以我有一个返回 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 的数组)?

2 个答案:

答案 0 :(得分:0)

试着像这样改变:

arr = [position(0,100) for _ in range(1000)]

您将获得带有元组的 arr

print(arr[:2])

输出:

[(94.38888058610041, 82.97455003388289, 56.356363837769564),
 (28.925535522819914, 62.10586090326522, 3.7630479522948956)]

答案 1 :(得分:0)

这里你想要的是 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)]))
相关问题