2010-10-05 3 views
3

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

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

Я попробовал метод combination_with_replacement в itertools Python, но со следующим кодом я получаю только 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