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)
我希望使用 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)