2017-04-19 2 views

Répondre

4

On dirait que vous voulez product du haut-itertools bibliothèque

>>> 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

Ici, vous allez:

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

Pour faire un produit cartésien il vous suffit de itérer dans toutes les dimensions dans ce cas

Par exemple:

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

La complexité de l'algorithme sera toujours difficile (pour 2 tableaux -> n2, pour 3 -> n3, ..., M -> n^M où n est la longueur de la plus longue série). Notez que vous avez des doublons: (a, b) est le même que (b, a). Vous pouvez donc modifier l'algorithme pour qu'il fonctionne plus rapidement si vous n'avez pas besoin des doublons.