Python: как создать двумерную матрицу с нулевым индексом размером n - PullRequest
0 голосов
/ 12 октября 2018

Учитывая значение n, каков наиболее эффективный способ создания матрицы с нулевым индексом, размер столбца и строки которой равен значению n?

Я знаю, что следующая команда создаст2d матрица с 0 как все значения ячеек:

[[0 for x in range(n)] for y in range(n)] 

Таким образом, когда n = 4, матрица будет выглядеть следующим образом:

[[0, 0, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0, 0],
 [0, 0, 0, 0]]

Но есть ли способсоздать матрицу следующим образом?

[[ 0,  1,  2,  3],
 [ 4,  5,  6,  7],
 [ 8,  9, 10, 11],
 [12, 13, 14, 15]]

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

Поскольку вы говорите о 2-мерных матрицах и конкретно спрашиваете об эффективности, лучше всего обратиться к numpy:

import numpy as np

n = 4    
my_matrix = np.arange(n*n).reshape(n,n)

>>> my_matrix
array([[ 0,  1,  2,  3],
       [ 4,  5,  6,  7],
       [ 8,  9, 10, 11],
       [12, 13, 14, 15]])

Или вы можете использовать такое понимание списка, каккак следующее (или одно из предложенных @hiroprotagonist):

n = 4  
my_ListOfLists = [list(range(i,i+n)) for i in range(0,n*n,n)]

>>> my_ListOfLists
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], [12, 13, 14, 15]]
0 голосов
/ 12 октября 2018

Примерно так будет работать.

[[i for i in range(j, j + 4)] for j in range(0, 20, 4)]

[[0, 1, 2, 3],
 [4, 5, 6, 7],
 [8, 9, 10, 11],
 [12, 13, 14, 15],
 [16, 17, 18, 19]]
0 голосов
/ 12 октября 2018

вы можете просто использовать текущие координаты x и y для вычисления значения x + y*n:

n = 4
print([[x + y*n for x in range(n)] for y in range(n)])

наши вы можете использовать itertools.count:

from itertools import count

n = 4
counter = count()
print([[next(counter) for x in range(n)] for y in range(n)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...