В вашей первой строке отсутствуют котировки вокруг http:
var http = require('http');
Если по какой-то причине вам нужна вся таблица, вы можете использовать uint8
dtype и упрощенную версию этого декартового кода продукта .
import numpy as np
from itertools import chain, repeat, accumulate
def cartesian_power(N, D):
dtype = f'u{2**(((N-1).bit_length() + 7) // 8 - 1).bit_length()}'
arr = np.empty((*repeat(N, D), D), dtype=dtype)
arrs = *accumulate(chain((arr,), repeat(0, D)), np.ndarray.__getitem__),
rng = np.arange(N, dtype=dtype)
idx = slice(None), *repeat(None, D-1)
for i in range(D-1, 0, -1):
arrs[i][..., i] = rng[idx[:D-i]]
arrs[i-1][1:] = arrs[i]
arr[..., 0] = rng[idx]
return arr.reshape(-1, D)
16 ^ 7 не проблема с этой функцией на моем ноутбуке 8 ГБ:
>>> cartesian_power(16, 7)
array([[ 0, 0, 0, ..., 0, 0, 0],
[ 0, 0, 0, ..., 0, 0, 1],
[ 0, 0, 0, ..., 0, 0, 2],
...,
[15, 15, 15, ..., 15, 15, 13],
[15, 15, 15, ..., 15, 15, 14],
[15, 15, 15, ..., 15, 15, 15]], dtype=uint8)
Вы можете использовать продукт из пакета itertools для создания объекта генератора
from itertools import product
x = [0, 1, 2, 3, 4]
a = product(x, repeat=2)
#next(a) will print (0, 0) and so on until it's exhausted
Пока вы хотите сохранить все числа в списке, это неэффективно для памяти. Посмотрите на расчет, чтобы понять, как он потребляет память.
Dimension = 7, N = 16
Total numbers generated = 16*16*...*16 (7 times) = 268435456
No. of elements used to represent a number = 7
Total numbers used = 268435456*7 = 268435456
Size used to represent an int in Python2 = 24 bytes
Total memory consumption = 268435456*24 = 6442450944 bytes = 6GB + Extra Overhead of each lists and lists of lists.
Вместо генерации всей последовательности вы можете создать генератор, как предложено @mamun, но итерация по нему будет очень трудоемкой.