2010-10-05 74 views
3

我需要在Python中生成大量列表。每个列表的长度是13,我有4个可能的值可以进入每个元素。这些是[1,-1,i,-i],但它可以是任何。因此,我应该得到4 * 4 * 4 ... * 4 = 4^13 = 67,108,864个列表,或者更一般地说,m^n给定了主题中的信息。用m个可能的元素生成长度为n的列表

我尝试了Python的itertools中的combinations_with_replacement方法,但使用下面的代码我只能得到560个结果。

c = it.combinations_with_replacement([1,-1,np.complex(0,1), np.complex(0,-1)], 13) 
print list(c) 

我知道组​​合不关心顺序,所以这个结果可能是正确的。但是,当我使用排列方法代替时,我只能选择第二个参数< =第一个参数中的元素数量。

任何想法如何做到这一点?

谢谢!

回答

7

我想你想

y = itertools.product((1, -1, 1j, -1j), repeat=13) 


然后,顺便说一句,print sum(1 for x in y)版画,67108864,如您所愿。

+0

就是这样,非常感谢! – Christoph 2010-10-05 04:06:32