Я думаю, что-то подобное должно работать на вас. По сути, это итеративное заполнение полей M
путем извлечения элементов из списка X
. Содержание по умолчанию None
в этом случае, но вы должны быть в состоянии настроить. Вы можете посмотреть, как это работает на repl
N = 3
M = 6
X = range(N) # or example, can be [x1,x2,x3]
for j1 in range(M-N+1):
for j2 in range(j1+1,M-N+2):
for j3 in range(j2+1,M):
r = [None]*M
r[j1] = X[0]
r[j2] = X[1]
r[j3] = X[2]
print(r)
Это даст следующий вывод:
[0, 1, 2, None, None, None]
[0, 1, None, 2, None, None]
[0, 1, None, None, 2, None]
[0, 1, None, None, None, 2]
[0, None, 1, 2, None, None]
[0, None, 1, None, 2, None]
[0, None, 1, None, None, 2]
[0, None, None, 1, 2, None]
[0, None, None, 1, None, 2]
[0, None, None, None, 1, 2]
[None, 0, 1, 2, None, None]
[None, 0, 1, None, 2, None]
[None, 0, 1, None, None, 2]
[None, 0, None, 1, 2, None]
[None, 0, None, 1, None, 2]
[None, 0, None, None, 1, 2]
[None, None, 0, 1, 2, None]
[None, None, 0, 1, None, 2]
[None, None, 0, None, 1, 2]
[None, None, None, 0, 1, 2]
В идеале вы хотели бы обобщить его для произвольного N, чтобы вам не приходилось жестко кодировать индексы j1
, j2
и j3
.