在Python中迭代N维

por*_*uod 1 python iteration recursion

我有一张地图,我们称之为M,其中包含通过N维映射的数据.

# If it was a 2d map, I could iterate it thusly:
start, size = (10, 10), (3, 3)
for x in range(start[0], start[0]+size[0]):
    for y in range(start[1], start[1]+size[1]):
        M.get((x, y))
# A 3d map would add a for z in ... and access it thusly
M.get((x, y, z))
# And so on.
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何创建一个可以产生正确迭代序列的迭代器?也就是说,鉴于start, size = (10, 10), (3, 3)它会产生2元组序列(10, 10), (10, 11), (10, 12), (11, 10), (11, 11)等.并且鉴于start, size = (10, 10, 10), (3, 3, 3)它将产生正确的3元组序列.

是的,我试过自己,但我的脑袋爆炸了.或者我无法证明花时间搞清楚,即使它很有趣.拿你的选择:)

lla*_*ram 8

在Python 2.6+中:

itertools.product(*[xrange(i, i+j) for i,j in zip(start, size)])
Run Code Online (Sandbox Code Playgroud)