(D'abord, j'ai choisi de le faire en Python parce que je jamais programmé en elle et ce serait une bonne pratique.)Créer des listes de x en python dynamique
Quelqu'un m'a demandé de mettre en œuvre un peu « combinaison » programme essentiellement émet toutes les combinaisons possibles d'un ensemble de groupes de nombres. Exemple, si vous avez:
(1,2,3) comme le premier ensemble,
(4,5,6) en tant que deuxième, et
(7,8,9) en tant que troisième, puis une combinaison serait (1,4,7) et ainsi de suite, avec un total de 27 combinaisons possibles. Cette personne veut juste faire une matrice 6rows x 6cols ou une matrice 5rows x 6cols. Cependant, je veux rendre mon petit programme aussi flexible que possible.
La prochaine exigence est de ne sortir que les combinaisons avec X nombres pairs. S'il veut 0 nombre pair, alors une combinaison possible serait (1,5,7). Vous avez eu l'idée. Pour la partie permutation, j'ai utilisé itertools.product(), qui fonctionne parfaitement. Ce serait facile si je supposais que le nombre de nombres dans chaque ensemble (cols) est fixé à 6. Dans ce cas, je pourrais créer manuellement 6 listes et ajouter chaque combinaison à la bonne liste. Cependant et encore, je veux que cela fonctionne avec N nombre de cols.
Je pense à 2 façons que je pourrais être en mesure de le faire, mais essayé avec aucune chance. Donc, ma question est: Comment puis-je créer?
li_1 = []
li_2 = []
...
li_x = []
La seule façon dont j'ai essayé d'utiliser "listes de listes":
for combination in itertools.product(*li):
total_combinations = total_combinations + 1
#Counts number of even numbers in a single combination
for x in range(numberInRows):
if combination[x] % 2 == 0:
even_counter = even_counter + 1
print "Even counter:",even_counter
num_evens[even_counter].append(combination)
print "Single set:",num_evens
even_counter = 0
print combination
print "Num_evens:",num_evens
print '\nTotal combinations:', total_combinations
après le code du 2 façons dont vous essayé –
Je vais avec la réponse d'André, bien que Aaron semble très similaire. Si possible, est-ce que quelqu'un pourrait indiquer où je fais mal dans mon code et comment je peux le réparer? – chiurox
Vous devriez mettre à zéro even_counter en haut de la boucle, pas en bas –