生成长度为n的包含m种元素的列表

3 投票
1 回答
618 浏览
提问于 2025-04-16 05:00

我需要在Python中生成很多列表。每个列表的长度是13,而每个元素可以有4种可能的值。这些值是[1, -1, i, -i],当然也可以是其他的。

所以我应该能得到4 * 4 * 4 ... * 4 = 4^13 = 67,108,864个列表,或者更一般地说,就是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)

我知道组合不考虑顺序,所以这个结果可能是对的。不过,当我改用permutations方法时,我只能选择第二个参数小于等于第一个参数中的元素数量。

有没有什么办法可以做到这一点呢?

谢谢!

1 个回答

7

我觉得你想要的是

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


顺便说一下,print sum(1 for x in y) 会输出 67108864,正如你所期待的那样。

撰写回答