Перестановки. Python 3. Модуль itertools.

§ 1 – Перестановки и тому подобное.

Вот как сейчас выглядит код для нахождения всех перестановок строки “a” длиной “n” (n меньше или равно длине a) без повторений.

import itertools
for i in itertools.permutations(a,n):
print (».join(i))

Рабочий код (с вводом конкретной строки может выглядеть так:

import itertools # подключение модуля
a=input()        # запрос строки
for i in itertools.permutations(a,len(a)):     # использование класса получения перестановок
print (».join(i))    # вывод результата

То же самое – но с повторениями:

import itertools
for i in itertools.product(a,repeat=n):
print (».join(i))

 

import itertools
a=input()
for i in itertools.product(a,repeat=len(a)):
print (».join(i))

Пояснение, что делает ».join(i). Дело в том, что строка кода for i in itertools.permutations(a,n): выводит результат в виде списка. Для слияния элементов списка используется метод join() следующим образом:

<разделитель места соединения>.join(<список>)

Например:
for i in itertools.permutations(“abc”,3):
print (i)

выведет

(‘a’, ‘b’, ‘c’)
(‘a’, ‘c’, ‘b’)
(‘b’, ‘a’, ‘c’)
(‘b’, ‘c’, ‘a’)
(‘c’, ‘a’, ‘b’)
(‘c’, ‘b’, ‘a’)

а
for i in itertools.permutations(a,n):
print (».join(i))

выведет
abc
acb
bac
bca
cab
cba

Файлы  py с кодом

Запись опубликована в рубрике учебная работа с метками . Добавьте в закладки постоянную ссылку.