itertools.product 如何生成由元组定义的 n 维数组

itertools.product how to generate an n-dimensional array as defined by a tuple

我希望使用 itertools.product(或类似的)从初始元组生成一组矩阵地址(作为元组)。

例如..

 (5,)  # return the addresses for a 1-dimensional matrix of 5 columns,
 (4,3) # return the addresses for a 2-dimensional matrix of 4 columns and 3 rows.
 (5, 3, 2) # ditto for a 3D matrix 

例如,元组 init_tuple 设置为 (4, 3)

# TL;DR
values = product(*[range(0, i) for i in init_tuple])

这是如何工作的?

product([1,2],[3,4]). # generates the cross product.
>(1, 3)
>(1, 4)
>(2, 3)
>(2, 4)

所以我想要元组中每个 i 范围 (0, i) 的叉积。 这意味着我想要这样的东西..

product([0,1,2,3],[0,1,2])

获取元组中每个 i 的范围列表非常简单。

[range(0, i) for i in init_tuple]
>[range(0, 3), range(0, 4)]

将列表作为参数提供只是 * 的距离。 (参数拆包很爽)

values = product(*[range(0, i) for i in init_tuple])


>(0, 0)
>(0, 1)
>(0, 2)
>(0, 3)
>(1, 0)
>(1, 1)
>(1, 2)
>(1, 3)
>(2, 0)
>(2, 1)
>(2, 2)
>(2, 3)