python - 从返回多个值的函数中选择单个输出(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)]))
推荐阅读
- linux - 如何在服务器上提交更改并从代码存储库中提取更新而不会发生冲突?
- javascript - Jinja功能不断更新
- sdk - Flutter 光栅崩溃:FontStyle::registerLanguageList 中的 recursive_mutex 解锁崩溃
- zigbee - 使用 USRP Source 检测 Telosb 排放
- python - 如何使用 open cv 在窗口中打印消息
- c# - 如何模拟(MOQ)已密封设置 AbstractAcquireTokenParameterBuilder 的 IConfidentialClientApplication?
- git - Git 偏移 PowerShell 中的文本
- vb.net - 从 Sharepoint 下载空白和 0KB 的文件
- amazon-web-services - 我如何在 aws _route_table 中做动态路由?
- php - 如何根据 Laravel 中的选定选项在 mysql 数据库的文本框中显示数据