Как я могу сгенерировать список всех возможных перестановок нескольких букв?
Поэтому я создаю генератор слов, который принимает несколько введенных букв, помещает их во все возможные позиции и сопоставляет их с документом для поиска слов. Если я приближаюсь к этому неправильному, скажите мне! Если нет, то как я могу это сделать? благодаря
для генерации всех перестановок заданного списка букв используйте модуль itertools.
import itertools for word in itertools.permutations( list_of_letters ): print ''.join(word)
Возможно, быстрее запустить его в обратном порядке: проиндексировать свой документ и для каждого слова посмотреть, является ли он подмножеством вашего списка букв.
Вы можете написать свою собственную функцию (:
def permutation(head, tail=''): if len(head) == 0: print tail else: for i in range(len(head)): permutation(head[0:i] + head[i + 1:], tail + head[i])
def allpermutationsOfString(words): if len(words) == 1: return [words] result = [] for index, letter in enumerate(words): wordWithoutLetter = words[:index] + words[index+1:] result = result + [letter + word for word in allpermutationsOfString(wordWithoutLetter)] return result print allpermutationsOfString("watup") #will print all permutations of watup
Вот еще один способ реализовать алгоритм.