Ярлык для всех возможных перестановок набора чисел для m цифр
Я работал на конечном поле. Предположим, у меня есть простое число p=7
, Итак, я получаю список q=[0,1,2,3,4,5,6]
, Теперь мне нужны все возможные перестановки элементов множества q на 7 мест. Например, [1,1,1,4,6,3,1] является одной из возможных перестановок. Есть ли в Python встроенная команда для этого? На самом деле я работаю с большим полем, где P 127 (p=127).
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
ну... звучит не разумно.