2015-12-14 3 views
-2

Допустим, у меня есть некоторые алфавиты и цифры в моем текстовом файле alphabets.txtпитон получить все возможные слова из списка алфавитов

A B E G L I P c e f u y 2 8 9 6 

Я хочу, чтобы открыть этот файл, который я могу сделать из

f = open("/home/someuser/Documents/alphabets.txt") 
for word in f.read().split(): 
    print(word) 

Но я хочу, чтобы случайные слова были напечатаны из этих алфавитов.

Я хочу, чтобы слова, начинающиеся с 8 символов с каждым алфавитом в нем. Подобно комбинации перестановок

Ни одно слово не должно быть оставлено из комбинации, ни одно из них не должно повторяться. Как я могу это сделать ??

Заранее спасибо

+0

Я не думаю, что это дубликат, по крайней мере, не из этого другого вопроса. Насколько я понимаю, повторяющиеся символы разрешены, но единственный ответ на этот вопрос не упоминает «продукт», а только «комбинации» и «перестановки». –

ответ

1

Используйте itertools.product, чтобы получить все комбинации.

>>> alphabet = "ABCDEF" 
>>> words = [''.join(x) for x in itertools.product(alphabet, repeat=3)] 
>>> words 
['AAA', 'AAB', ... 'FFE', 'FFF'] 
>>> len(words) 
216 

Для получения случайных слов, вы можете random.shuffle этот список и pop элементы из него (не повторяется), либо использовать random.choice (с повторами)

>>> random.choice(words) 
'EFA' 
>>> random.shuffle(words) 
>>> words.pop() 
'CAD' 

Однако исчерпывающе генерируя все 4294967296 восьми- буквенные слова с вашего алфавита занимают очень много времени. Если вам просто нужны несколько случайных выборок, было бы проще просто соединить 8 случайных букв с алфавита.

>>> [''.join(random.choice(alphabet) for _ in range(8)) for _ in range(5)] 
['28GLIGB9', 'PE8uyLue', '6c8eGByA', 'BLucIuuf', 'fEeBf9Bf'] 
Смежные вопросы