Как создать комбинацию строк фиксированной длины, используя набор символов?
В Python, как я могу сгенерировать строку со всеми комбинациями набора символов до определенной длины?
Я знаю, как использовать itertools для генерации всех комбинаций и перестановок, но я не могу понять, как генерировать строки динамической длины.
Например:
a = [0,1] длина = 4
Результат:
[0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111, 1000, 1001, 1101, 1110, 1111]
2 ответа
Решение
Вы могли бы использовать 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)]
Использование 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)]