我知道itertools.permutations(),但是我要问的内容略有不同。
给出字符列表:
["*", "/", "+", "-"]
是否有一个内置的程序可以创建所有长度为N的排列的给定字符的列表?例如,如果我想要长度7:
["*", "*", "*", "*", "*", "*", "*"]
["*", "*", "*", "*", "*", "*", "/"]
["*", "*", "*", "*", "*", "*", "+"]
... <after much processing> ...
["-", "-", "-", "-", "-", "-", "/"]
["-", "-", "-", "-", "-", "-", "+"]
["-", "-", "-", "-", "-", "-", "-"]
就目前而言,我编写了自己的递归过程来生成它们,但是我确定我缺少一些神奇的一线电话。
答案 0 :(得分:5)
您要寻找的是7个["*", "/", "+", "-"]
列表的笛卡尔乘积。正是出于这个目的,itertools.product
接受了一个repeat
参数:
for row in itertools.product(["*", "/", "+", "-"], repeat=7):
print(row)