如何在for循环中直接解包np.unravel_index()返回的元组
在for循环中直接解包np.unravel_index返回值的方法
问题复现
直接在for循环定义中解包np.unravel_index()返回的元组会触发报错,测试代码如下:
for i,j in np.unravel_index(range(len(10)), (2, 5)): print(i,j)
返回错误信息:
ValueError: too many values to unpack (expected 2)
临时解决方案
原本可以通过先接收返回值再按索引取对应维度打包的方式实现需求:
idx = np.unravel_index(range(len(10)), (2, 5)) for i, j in zip(idx[0], idx[1]): print(i, j)
该方案存在局限:需要提前知晓返回值的维度,且需要额外声明变量接收np.unravel_index()的返回结果。
最优解决方案
通过*操作符直接解包np.unravel_index()的返回值传入zip(),即可在for循环赋值时直接完成解包,无需提前知晓维度,也不用额外声明中间变量:
for i, j in zip(*np.unravel_index(range(len(10)), (2, 5))): print(i, j)
内容的提问来源于stack exchange,提问作者Thomas Tiotto
相关产品推荐
相关产品推荐

