Встроенный для создания перестановок из набора символов длиной n? - PullRequest
0 голосов
/ 16 октября 2018

Я знаю о itertools.permutations (), но то, о чем я спрашиваю, немного отличается.

Учитывая список символов:

["*", "/", "+", "-"]

Есть ли встроенныйчто создаст списки заданных символов всех перестановок длины N?Так, например, если бы я хотел длину 7:

["*", "*", "*", "*", "*", "*", "*"]
["*", "*", "*", "*", "*", "*", "/"]
["*", "*", "*", "*", "*", "*", "+"]
  ... <after much processing> ...
["-", "-", "-", "-", "-", "-", "/"]
["-", "-", "-", "-", "-", "-", "+"]
["-", "-", "-", "-", "-", "-", "-"]

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

1 Ответ

0 голосов
/ 16 октября 2018

То, что вы ищете, это декартово произведение списков 7 ["*", "/", "+", "-"].itertools.product принимает аргумент repeat именно для этой цели:

for row in itertools.product(["*", "/", "+", "-"], repeat=7):
    print(row)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...