Как присвоить значение элементу 2d массива с динамическим размером? - PullRequest
0 голосов
/ 24 апреля 2019

Я хочу создать матрицу смежности для графа без использования каких-либо библиотек. Проблема в том, что размер графика не является статичным и со временем увеличивается. Поэтому я не могу использовать такую ​​команду, как:

adj = [ [None for i in range(5)] for j in range(4) ]

и, например, присвоить 4 элементу (1,1):

adj[1][1]=4

Я создал пустой список с именем adj:

adj = []

теперь каждый раз, когда узел добавляется на график, я добавляю список в adj:

adj.append([])

Как я могу присвоить значение определенному элементу матрицы, как я делал с q[1][1]=4, когда размер был зафиксирован?

1 Ответ

1 голос
/ 24 апреля 2019

Вы можете начать с любого размера по умолчанию, а затем использовать extend для добавления элементов в подсписок или добавления нового подсписка.

adj = [ [0 for i in range(2)] for j in range(2) ]
print(adj)
#[[0, 0], [0, 0]]
adj[0].extend([1, 1])
#[[0, 0, 1, 1], [0, 0]]
print(adj)
adj.extend([[0, 0, 0, 0, 0]])
print(adj)
#[[0, 0, 1, 1], [0, 0], [0, 0, 0, 0, 0]]

Как только вы измените размер списка в соответствии с требованиями, вы можете назначить свои элементы.

adj[0][0] = 2
adj[1][1] = 3
adj[2][2] = 4
print(adj)
#[[2, 0, 1, 1], [0, 3], [0, 0, 4, 0, 0]]
...