2017-04-19 127 views

回答

4

聽起來像是你想從product內置itertools

>>> import itertools 
>>> list(itertools.product([1, 2, 3], [4], [5, 6])) 
[(1, 4, 5), (1, 4, 6), (2, 4, 5), (2, 4, 6), (3, 4, 5), (3, 4, 6)] 
>>> 
>>> columns = [[1,2,3], 
       [4], 
       [5,6]] 
>>> list(itertools.product(*columns)) 
[(1, 4, 5), (1, 4, 6), (2, 4, 5), (2, 4, 6), (3, 4, 5), (3, 4, 6)] 
1

在這裏你去:

a = [1,2,3] 
b = [4] 
c = [5,6] 

d = [[x, y, z] for x in a for y in b for z in c] 
0

要進行笛卡爾乘積,你只需要在各個方面進行迭代在這種情況下,

例如:

for x in dimension_x: 
    for y in dimension_y: 
     for z in dimension_z: 
      use the x,y,z 

的算法的複雜性將始終是艱難(2個陣列 - > N2,3 - > N3,...,對於M - > N R個M其中n是最長的陣列的長度)。

請注意,您有重複項: (a,b)與(b,a)相同。因此,如果您不需要重複項,則可以更改算法以加快工作速度。

相關問題