1
  • 我刚找到这个指令

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

    由 PAG 发布。

    有人可以解释它是如何工作的吗?

  • 我试图找到一种在不重复 3 个袋子中的 n 元组的情况下进行排列的方法,如果我愿意,我只能使用 itertools。谢谢
4

1 回答 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 0s 和1s 的所有排列。

请注意,它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 回答