我刚刚找到了这条指令
itertools.product(*[(0, 1)] * n)
由PAG发布。
有人能解释一下它是如何运作的吗?
答案 0 :(得分:3)
[(0, 1)]
是一个数字0
和1
元组的列表。
[(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
0
和1
s的所有排列。
请注意,itertools.product
需要repeat
参数,该参数应该用于执行此类操作:
itertools.product((0, 1), repeat=n)
要进行排列,您可以使用itertools.permutations
功能:
def pick_into_three_bags(n):
return itertools.permutations(range(n), 3)