我刚找到这个指令
itertools.product(*[(0, 1)] * n)
由 PAG 发布。
有人可以解释它是如何工作的吗?
- 我试图找到一种在不重复 3 个袋子中的 n 元组的情况下进行排列的方法,如果我愿意,我只能使用 itertools。谢谢
问问题
1153 次
1 回答
4
[(0, 1)]
0
是数字和的单个元组的列表1
。
[(0, 1)] * n
复制列表中的元组,所以我们得到
[(0, 1), (0, 1), ..., (0, 1), (0, 1)]
然后,如果我们查看itertools.product
函数,我们希望将每个元组作为单个参数传入。因此,我们使用*
-operator 将列表解压缩为itertools.product
函数的参数。所以,我们的函数等价于:
itertools.product((0, 1), (0, 1), ..., (0, 1), (0, 1))
它计算n
0
s 和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)
于 2013-05-02T04:01:26.370 回答