Создание и заполнение матрицы в python

Есть такая задача "Даны два числа n и m. Создайте двумерный массив A[n][m], заполните его таблицей умножения A[i][j]=i*j и выведите на экран. При этом нельзя использовать вложенные циклы, все заполнение массива должно производиться одним циклом." Нашёл решение на паскале, но никак не могу разобраться с созданием и заполнением матрицы в python. Вот решение на паскале

  i,j,k:byte;
  a:array[1..10,1..10] of byte;
begin
  for k:=1 to 100 do
  begin
    i:=(k-1)div10+1;
    j:=k mod 10;
    if j=0 then j:=10;
    a[i,j]:=i*j;
    Write(a[i,j], )
  end
end.

Ответы (1 шт):

Автор решения: Zhihar

двумерный массив [m][n] может быть представлен в виде одномерного массива размером [mxn]

в этом случае

x = index % m
y = index / n

таким образом ваш двумерный список можно сделать так:

m = 10
n = 10

arr = [[0] * m] * n

size = m * n

for index in range(size):
    x = index % m
    y = index // m

    value = (x + 1) * (y + 1)

    arr[x][y] = value

    print(value, end=' ')

    if x == m - 1:
        print()
→ Ссылка