从返回多个值的函数中选择单个输出(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的数组(?

您想要的是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)]))

尝试这样更改:

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

您将获得带有元组的arr

print(arr[:2])

输出:

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

最新更新