Python, массивы
Столкнулся с такой задачей:
Допустим есть матрица 3 на 3:
[[0,2,1],
[2,0,20],
[1,20,0]]
Элементы матрицы — это длины ребер графа (получается координаты элементов матрицы — это две вершины между которыми проведено ребро данного размера).
Например: элемент расположенный в матрице с координатами (0,1) это 2 это наше ребро графа, проведенное с вершины(0) в вершину(1) и его длина = 2
Надеюсь понятно объяснил
Так вот мне нужно сделать двумерный массив такого вида: [[x, y, z], [x, y, z]], где "x" и "y" - это координаты элемента "z" в матрице`
Я новичок в этом деле, может эта задача и не сложная, но решить не могу((
(Заранее спасибо за любую информацию)
Ответы (2 шт):
Автор решения: MaxU
→ Ссылка
In [64]: m = [[0,2,1], [2,0,20], [1,20,0]]
In [65]: res = []
...: for r in range(len(m)):
...: for c in range(len(m[0])):
...: if c <= r:
...: continue
...: res.append([r, c, m[r][c]])
...:
In [66]: res
Out[66]: [[0, 1, 2], [0, 2, 1], [1, 2, 20]]
Автор решения: Ivan
→ Ссылка
Все, я допер как это сделать)
arr = [[0, 2, 1],
[2, 0, 20],
[1, 20, 0]]
def coord(arr):
res = []
for i in range(len(arr)):
for j in range(len(arr)):
if (arr[i][j] != 0):
res.append([i, j, arr[i][j]])
return res
print(coord(arr))