Как получить всю комбинацию, используя перестановку с условием - PullRequest
0 голосов
/ 10 января 2020
from itertools import permutations 
permList = permutations('ABC')
for perm in list(permList): 
       print (''.join(perm)) 

Вывод

ABC
ACB
BAC
BCA
CAB
CBA

Как включить, получить комбинацию из 2 букв также вместе с вышеприведенным выводом, в основном мне нужно определить минимальную длину для запуска 2

Другой пример строки ABCDE здесь мне нужно начать минимальную перестановку с 3 (len(list)) < 3 has to avoided

Ответы [ 3 ]

2 голосов
/ 10 января 2020

Одним из очевидных способов является использование for l oop для перебора различных значений параметра r для permutations:

from itertools import permutations 

for x in range(2,4):
    for perm in permutations('ABC', r=x): 
           print (''.join(perm)) 

Обратите внимание, что вы можете выполнять итерацию непосредственно из объект, возвращенный из permutations (так как это повторяемый ).


Аналогично, чтобы получить все перестановки, содержащие более трех элементов, вы можете использовать:

from itertools import permutations 

for x in range(3, len("ABCDE") + 1):
    for perm in permutations('ABCDE', r=x): 
           print (''.join(perm)) 
1 голос
/ 10 января 2020

Похоже, что перестановки могут принимать второй аргумент, который определяет длину. https://docs.python.org/2/library/itertools.html#itertools .permutations

from itertools import permutations 
input_str = 'ABC'
min_len = 2
max_len = len(input_str)

perm_list = []

for l in range(2, max_len + 1):
    l_permList = list(permutations(input_str, l))
    perm_list += l_permList

print (perm_list)
1 голос
/ 10 января 2020
given_list = [1,2,3,4,5]

min_num = 2

for x in range(min_num, len(given_list)):
    perm = permutations(given_list, x)
    all_perms.extend(perm)

Вы получите все перестановки по крайней мере с min_num значениями.

...