Перестановки строки в Python

  1. Используйте функцию itertools.permutations() для возврата всех перестановок строки в Python
  2. Создайте определяемую пользователем функцию для возврата всех перестановок для строки в Python

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

Строку, как мы знаем, можно рассматривать как набор отдельных символов.

В этой статье мы постараемся найти все возможные перестановки для заданной строки.

Используйте функцию itertools.permutations() для возврата всех перестановок строки в Python

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

Например,

from itertools import permutations
lst = list(permutations('day'))
print(lst)

Выход:

[('d', 'a', 'y'), ('d', 'y', 'a'), ('a', 'd', 'y'), ('a', 'y', 'd'), ('y', 'd', 'a'), ('y', 'a', 'd')]

Обратите внимание на кортежи, созданные в выходных данных, содержащих расположение символов. Мы можем изменить это на список строк, используя функцию join () и метод понимания списка.

См. Следующий код.

from itertools import permutations
lst = [''.join(p) for p in permutations('day')]
print(lst)

Выход:

['day', 'dya', 'ady', 'ayd', 'yda', 'yad']

Мы объединяем элементы кортежа с помощью функции join() и используем ее для каждого кортежа путем итерации по списку.

Создайте определяемую пользователем функцию для возврата всех перестановок для строки в Python

Мы можем создать простую функцию для поиска всех перестановок строки. Мы создадим рекурсивную функцию. В этом методе мы просто поменяем местами строковые элементы один раз и снова вызовем функцию с новым расположением. Показываем финальные аранжировки.

Мы реализуем вышеуказанную логику в следующем коде.

def string_permutations(s, i, n): 
    if i==n: 
        print(''.join(s) )
    else: 
        for j in range(i,n): 
            s[i], s[j] = s[j], s[i] 
            string_permutations(s, i+1, n) 
            s[i], s[j] = s[j], s[i]  
  
a = "day"
x = len(a) 
s = list(a) 
print(permute(s, 0, x))

Выход:

day
dya
ady
ayd
yad
yda
None

Как видите, указаны начальная и конечная позиции, в которых мы хотим выполнить перестановки. Строка также передается как список символов. Чтобы найти все возможные перестановки, мы устанавливаем начало в 0 и конец как длину строки.

Сопутствующая статья - Python String

  • Как проверить, что строка пуста в Python
  • Как удалить белый пробел в строке на Python
  • Как конвертировать строку в дату на Python
  • Как преобразовать строку в нижний кейс на Python 2 и 3