生成大小为n的二进制数作为元组:itertools.product(* [(0,1)] * n)

时间:2013-05-02 03:56:18

标签: python permutation itertools

  • 我刚刚找到了这条指令

    itertools.product(*[(0, 1)] * n)
    

    由PAG发布。

    有人能解释一下它是如何运作的吗?

  • 我试图找到一种方法来进行排列,而不需要在3个袋子中重复n个元组 如果我愿意,我只能使用itertools。感谢

1 个答案:

答案 0 :(得分:3)

[(0, 1)]是一个数字01元组的列表。

[(0, 1)] * n复制列表中的元组,所以我们得到

[(0, 1), (0, 1), ..., (0, 1), (0, 1)]

然后,如果我们查看itertools.product函数,我们希望将每个元组作为单个参数传递。因此,我们使用* - 运算符将列表解压缩为itertools.product函数的参数。所以,我们的功能相当于:

itertools.product((0, 1), (0, 1), ..., (0, 1), (0, 1))

计算n 01 s的所有排列。

请注意,itertools.product需要repeat参数,该参数应该用于执行此类操作:

itertools.product((0, 1), repeat=n)

要进行排列,您可以使用itertools.permutations功能:

def pick_into_three_bags(n):
    return itertools.permutations(range(n), 3)