2013-09-12 1 views
1

В Python, как я могу сгенерировать строку со всеми комбинациями набора символов до определенной длины?Как создать комбинацию строк длины исправления с использованием набора символов?

Я знаю, как использовать itertools для генерации всех комбинаций и перестановок, но я не могу понять, как создавать строки динамической длины.

Например:

длина = [0,1] = 4

Результат:

[0000, 0001 , 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1101, 1110, 1111]

+1

Вы запросили строки «до определенной длины», но в вашем примере вы приводите результаты только с такой длиной. –

+0

Это хороший момент. Я собирался зацикливать функцию с диапазоном(), как только я понял, как генерировать результаты фиксированной длины. – drum

ответ

5

Вы можете использовать itertools.product:

li = [] 
for i in itertools.product([0,1], repeat=4): 
    li.append(''.join(map(str, i))) 
print (li) 

>>> li 
['0000', '0001', '0010', '0011', '0100', '0101', '0110', '0111', '1000', '1001', '1010', '1011', '1100', '1101', '1110', '1111'] 

Возможная один лайнер:

[''.join(map(str, i)) for i in itertools.product([0,1], repeat=4)] 
+0

Спасибо. Это научит меня более внимательно читать документ. – drum

3

использование product от модуля itertools.

>>> from itertools import product 
>>> [i for i in product([0,1],repeat=4)] 
[(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 1), (0, 1, 0, 0), (0, 1, 0, 1), (0, 1, 1, 0), (0, 1, 1, 1), (1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)] 

 Смежные вопросы

  • Нет связанных вопросов^_^