2017-06-20 1 views
0

est-il un moyen facile en Python pour calculer toutes les permutations possibles d'une longueur donnée avec deux entiers en utilisant l'un ou les deux entiers. Par exemple, si mes entiers sont 1 et 2 et je veux calculer toutes les permutations possibles de longueur 3, je devrais obtenir (111, 112, 121, 122, 211, 212, 221, 222). Je pensais que itertools.permutations fonctionnerait, mais apparemment si la longueur est> le nombre d'entiers, aucun élément n'est retourné.permutations Python de deux entiers de longueur donnée

+0

Merci, c'est exactement ce que je avais besoin. Je ne sais pas pourquoi cela n'est pas apparu dans ma recherche. – henrypj

Répondre

-1
import itertools 

length = 3 
possible_int = [1,2] 
all_permutations = [] 
for i in range(length+1): 
    first = [possible_int[0]]*i 
    second = [possible_int[1]]*(length-i) 
    permutations = [list(x) for x in itertools.permutations(first+second)] 
    for element in permutations: 
     if element not in all_permutations: 
      all_permutations.append(element) 

print(all_permutations) 
1

Si ce que vous cherchez est tout simplement:

[(1, 1), (1, 2), (2, 1), (2, 2)] 

puis voir Permutation of x length of 2 characters, et ce fil est un doublon.

Si, au contraire, ce que vous cherchez est

[11, 12, 21, 22] 

puis utilisez:

import itertools as it 
print([int(str(i) + str(j)) for i, j in it.product(l, repeat=2)]) 
[11, 12, 21, 22]