Чтобы найти анаграммы строки в Python, вы можете использовать несколько методов. Вот несколько подходов:
Метод 1: использование itertools.permutations()
import itertools
def find_anagrams(string):
anagrams = []
permutations = itertools.permutations(string)
for permutation in permutations:
anagram = ''.join(permutation)
if anagram not in anagrams:
anagrams.append(anagram)
return anagrams
string = "python"
result = find_anagrams(string)
print(result)
Метод 2. Использование рекурсивной функции
def find_anagrams(string):
if len(string) <= 1:
return [string]
else:
anagrams = []
for i, letter in enumerate(string):
for sub_anagram in find_anagrams(string[:i] + string[i+1:]):
anagrams.append(letter + sub_anagram)
return anagrams
string = "python"
result = find_anagrams(string)
print(result)
Метод 3: использование Collections.Counter()
from collections import Counter
def find_anagrams(string):
anagrams = []
counter = Counter(string)
_find_anagrams('', len(string), counter, anagrams)
return anagrams
def _find_anagrams(current, length, counter, anagrams):
if len(current) == length:
anagrams.append(current)
return
for letter in counter:
if counter[letter] > 0:
counter[letter] -= 1
_find_anagrams(current + letter, length, counter, anagrams)
counter[letter] += 1
string = "python"
result = find_anagrams(string)
print(result)