内置用于创建长度为n的字符集的排列吗?

时间:2018-10-16 20:44:30

标签: python permutation itertools

我知道itertools.permutations(),但是我要问的内容略有不同。

给出字符列表:

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

是否有一个内置的程序可以创建所有长度为N的排列的给定字符的列表?例如,如果我想要长度7:

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

就目前而言,我编写了自己的递归过程来生成它们,但是我确定我缺少一些神奇的一线电话。

1 个答案:

答案 0 :(得分:5)

您要寻找的是7个["*", "/", "+", "-"]列表的笛卡尔乘积。正是出于这个目的,itertools.product接受了一个repeat参数:

for row in itertools.product(["*", "/", "+", "-"], repeat=7):
    print(row)