现在的需求是,有若干个List,假设2个:
[1, 3, 5]
[4, 6]
我们要输出(1, 4), (1, 6), (3, 4), (3, 6), (5, 4), (5, 6)
Python中直接提供了笛卡尔乘积,很给力:
a = [1, 3, 5] b = [4, 6] import itertools for x in itertools.product(a, b): print x (1, 4) (1, 6) (3, 4) (3, 6) (5, 4) (5, 6)
而在实际中的问题是,我们要对任意维度(任意个list)之间做笛卡尔乘积。
做法是把要笛卡尔的X个list包装起来,然后加星号,如下:
list = [a, b] for x in itertools.product(*list): print x (1, 4) (1, 6) (3, 4) (3, 6) (5, 4) (5, 6)