首页 > 解决方案 > python3:我可以获得“一个”3d列表的笛卡尔积吗?

问题描述

我有一个如下所示的列表

[['a'], ['b'], [[1], [2], [3]], ['d']]

我需要得到

[['a'], ['b'], [1], ['d']], [['a'], ['b'], [2], ['d']],[['a'], ['b'], [3], ['d']]

我看到了一些帖子并找到了 itertools.product,但我认为这需要与参数相同维度的多个列表。

有没有办法得到结果?

标签: pythonpython-3.6

解决方案


您可以使用itertools.product星号运算符(请参见此处)。

那看起来像

from itertools import product
A = [['a'], ['b'], [[1], [2], [3]], ['d']]

for a in product(*A):
   print(a)

# yields
# ('a', 'b', [1], 'd')
# ('a', 'b', [2], 'd')
# ('a', 'b', [3], 'd')

推荐阅读