python - python3:我可以获得“一个”3d列表的笛卡尔积吗?
问题描述
我有一个如下所示的列表
[['a'], ['b'], [[1], [2], [3]], ['d']]
我需要得到
[['a'], ['b'], [1], ['d']]
, [['a'], ['b'], [2], ['d']]
,[['a'], ['b'], [3], ['d']]
我看到了一些帖子并找到了 itertools.product,但我认为这需要与参数相同维度的多个列表。
有没有办法得到结果?
解决方案
您可以使用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')