Сформировать список длиной n с m возможными элементами - PullRequest
3 голосов
/ 05 октября 2010

Мне нужно создать тонну списков в Python. Каждый список имеет длину 13, и у меня есть 4 возможных значения, которые могут входить в каждый элемент. Это [1, -1, i, -i], но это может быть что угодно.

Таким образом, я должен получить 4 * 4 * 4 ... * 4 = 4 ^ 13 = 67,108,864 списков или, в более общем смысле, m ^ n, учитывая информацию в теме.

Я попробовал метод комбинаций_в_треблении в itertools Python, но со следующим кодом я получил только 560 результатов.

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

Я знаю, что комбинации не заботятся о порядке, поэтому этот результат, вероятно, правильный. Однако когда я использую метод перестановок, я могу выбрать только второй аргумент <= количество элементов в первом аргументе. </p>

Есть идеи, как этого добиться?

Спасибо!

1 Ответ

7 голосов
/ 05 октября 2010

Я думаю, вы хотите

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


Затем, кстати, print sum(1 for x in y) отпечатков, 67108864, как вы ожидаете.

...