2013-05-02 72 views
1
+0

'zip(* [iter(seq)] * 3)'例如以3为一组分割一个序列,这是一个恰当的用例。 'product'接受一个'repeat'参数,使得这个代码无用。 – jamylak 2013-05-02 04:15:13

回答

3

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

[(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)) 

其计算n0 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) 
+0

请注意重复参数,使此代码无用 – jamylak 2013-05-02 04:16:11

+0

@jamylak感谢您的提示,编辑。 – Xymostech 2013-05-02 04:19:54

+0

感谢,但我不能有重复的排列。 – user1347096 2013-05-02 04:26:36

相关问题