1

我一直在研究有限域。假设我有一个素数p=7。所以我得到了一份清单q=[0,1,2,3,4,5,6]。现在我想要集合 q 的元素的所有可能排列7 个位置。例如 [1,1,1,4,6,3,1] 是可能的排列之一。python中是否有任何内置命令可以做到这一点?实际上,我正在与 P 所在的更大领域合作127 (p=127).

4

1 回答 1

1

这些不是排列,因为元素是重复的,这看起来更像是一个产品。

您可以itertools.product在重复q列表中使用(此处为 3 个元素):

import itertools

q=[0,1,2]   # or q = list(range(3))

for z in itertools.product(*(q,)*len(q)):  # using arg unpacking like if it was (q,q,q)
    z = list(z) # to convert as list
    print(z)

印刷:

[0, 0, 0]
[0, 0, 1]
[0, 0, 2]
[0, 1, 0]
[0, 1, 1]
[0, 1, 2]
...snip...
[2, 2, 0]
[2, 2, 1]
[2, 2, 2]

因为p=3它打印3**3 = 27值。如果p=127好……听起来不合理。

于 2018-06-13T13:37:23.890 回答