使用Python通过迭代生成二维数组

使用Python通过迭代生成二维数组,python,list,Python,List,例如,我有以下二维数组 t = [[1,2,3], [4,5], [6,7]] 通过使用列表理解,我得到 >>> [[x, y, z] for x in t[2] for y in t[1] for z in t[0]] [[6, 4, 1], [6, 4, 2], [6, 4, 3], [6, 5, 1], [6, 5, 2], [6, 5, 3], [7, 4, 1], [7, 4, 2], [7, 4, 3], [

例如,我有以下二维数组

t = [[1,2,3],
     [4,5],
     [6,7]]
通过使用列表理解,我得到

>>> [[x, y, z] for x in t[2] for y in t[1] for z in t[0]]
[[6, 4, 1], 
 [6, 4, 2], 
 [6, 4, 3], 
 [6, 5, 1], 
 [6, 5, 2], 
 [6, 5, 3], 
 [7, 4, 1], 
 [7, 4, 2], 
 [7, 4, 3], 
 [7, 5, 1], 
 [7, 5, 2], 
 [7, 5, 3]]
但是如果输入有3个以上的列表怎么办?我的意思是,我不想硬编码t[2]之类的东西。我想把由任意数量的列表组成的t作为输入。是否有使用列表理解来实现这一点

提前谢谢

使用:

使用:

使用:

使用:


请看一下itertools模块。该函数执行您想要的操作,
除非您可能希望颠倒输入顺序。

请查看itertools模块。该函数执行您想要的操作,
除非你想颠倒输入顺序。

我会看一看我会看一看你比我快=你赢了我=D
>>> import itertools
>>> t = [[1,2,3], [4,5], [6,7]]
>>> [x for x in itertools.product(*t[::-1])]
[(6, 4, 1),
 (6, 4, 2),
 (6, 4, 3),
 (6, 5, 1),
 (6, 5, 2),
 (6, 5, 3),
 (7, 4, 1),
 (7, 4, 2),
 (7, 4, 3),
 (7, 5, 1),
 (7, 5, 2),
 (7, 5, 3)]
>>> [list(x) for x in itertools.product(*t[::-1])]
[[6, 4, 1],
 [6, 4, 2],
 [6, 4, 3],
 [6, 5, 1],
 [6, 5, 2],
 [6, 5, 3],
 [7, 4, 1],
 [7, 4, 2],
 [7, 4, 3],
 [7, 5, 1],
 [7, 5, 2],
 [7, 5, 3]]
In [1]: import itertools

In [2]: t = [[1,2,3], [4,5], [6,7]]

In [3]: list(itertools.product(*t[::-1]))
Out[3]:
[(6, 4, 1),
 (6, 4, 2),
 (6, 4, 3),
 (6, 5, 1),
 (6, 5, 2),
 (6, 5, 3),
 (7, 4, 1),
 (7, 4, 2),
 (7, 4, 3),
 (7, 5, 1),
 (7, 5, 2),
 (7, 5, 3)]