2017-07-21 2 views
0

Je suis bloqué sur un problème Python et j'espère que quelqu'un pourrait m'aider.Comment calculer toutes les combinaisons de listes

Le problème est simple en réalité. Je tente de construire des listes avec toutes les combinaisons possibles, mais les éléments de la liste n'ont pas la même portée.

voici mon code, j'ai essayé de faire quelque chose avec pour boucle mais ça ne marche pas. Self.Commandlist est une liste avec une plage fixe, et se remplit de zéro au premier abord.

self.Commandlist = [0,0,0]

self.Algo.Inputs [j] .Values ​​me donne la taille de chaque élément, par exemple, si self.Algo.Inputs [0]. valeurs = 4 self.Algo.Inputs [1] .Values ​​= 1 self.Algo.Inputs [2] .Values ​​= 2

je veux toutes les combinaisons, [0,0,0], [1, 0,0], [2,0,0], [3,0,0], [4,0,0], [0,1,0], [1,1,0], [2,1, 0], [3,1,0], [4,1,0] etc.

Je pense que j'ai oublié une boucle mais je ne peux pas comprendre. J'ai essayé quelques trucs avec le module itertools aussi, mais je ne peux pas le faire fonctionner.

Merci pour votre aide.

+0

Pour la sortie attendue vous voulez toutes les combinaisons possibles de gamme (x) .. par exemple 0,1, ... x-1; 1,0,2, .... x-1; etc? – depperm

+2

Vous pouvez utiliser le module 'itertools'. –

Répondre

1

Comme mentionné, vous pouvez utiliser itertools, par exemple comme ça:

import itertools 
a = b = c = range(3) # you can specify different range for each one 
[list(x) for x in list(itertools.product(a, b, c))] 

Résultat:

[[0, 0, 0], [0, 0, 1], [0, 0 , 2], [0, 1, 0], [0, 1, 1], [0, 1, 2], [0, 2, 0], [0, 2, 1], [0, 2, 2 ], [1, 0, 0], [1, 0, 1], [1, 0, 2], [1, 1, 0], [1, 1, 1], [1, 1, 2], [1, 2, 0], [1, 2, 1], [1, 2, 2], [2, 0, 0], [2, 0, 1], [2, 0, 2], [2 , 1, 0], [2, 1, 1], [2, 1, 2], [2, 2, 0], [2, 2, 1], [2, 2, 2]]

+0

Merci beaucoup, c'est exactement ce dont j'ai besoin. Pendant ce temps, le nombre d'éléments et leur portée sont des variables. il est possible de le faire avec une boucle je suppose? – PythonItsLife