Как определить двумерный массив в Python - PullRequest
623 голосов
/ 12 июля 2011

Я хочу определить двумерный массив без инициализированной длины следующим образом:

Matrix = [][]

но это не работает ...

Я пробовал код ниже, но он тоже неправильный:

Matrix = [5][5]

Ошибка:

Traceback ...

IndexError: list index out of range

В чем моя ошибка?

Ответы [ 25 ]

2 голосов
/ 05 февраля 2018

используя список:

matrix_in_python  = [['Roy',80,75,85,90,95],['John',75,80,75,85,100],['Dave',80,80,80,90,95]]

с помощью dict: Вы также можете сохранить эту информацию в хеш-таблице для быстрого поиска, например

matrix = { '1':[0,0] , '2':[0,1],'3':[0,2],'4' : [1,0],'5':[1,1],'6':[1,2],'7':[2,0],'8':[2,1],'9':[2,2]};

матрица ['1'] даст вам результат за O (1) время

* nb : вам нужно иметь дело со столкновением в хеш-таблице

1 голос
/ 08 февраля 2014
# Creates a list containing 5 lists initialized to 0
Matrix = [[0]*5]*5

Будьте осторожны с этим коротким выражением, полное объяснение смотрите в ответе @ F.J

0 голосов
/ 21 января 2019

В случае, если вам нужна матрица с заранее заданными числами, вы можете использовать следующий код:

def matrix(rows, cols, start=0):
    return [[c + start + r * cols for c in range(cols)] for r in range(rows)]


assert matrix(2, 3, 1) == [[1, 2, 3], [4, 5, 6]]
0 голосов
/ 28 декабря 2018

Попробуйте это:

rows = int(input('Enter rows\n'))
my_list = []
for i in range(rows):
    my_list.append(list(map(int, input().split())))
0 голосов
/ 18 ноября 2018
l=[[0]*(L) for i in range(W)]

Будет быстрее, чем:

l = [[0 for x in range(L)] for y in range(W)] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...