Кажется, что это может быть легче понять как простое понимание словаря:
> A=[[1, 0, 0], [0, 0, 0], [0, 1, 1]]
> {row:[col for col, included in enumerate(cols) if included ] for row, cols in enumerate(A)}
{0: [0], 1: [], 2: [1, 2]}
Если вы хотите использовать циклы, вам нужно циклически проходить по каждой строке, а затем по каждому списку в строке,Что-то вроде:
adj = {}
for index, row in enumerate(A):
adj[index] = []
for e_index, edge in enumerate(row):
if edge:
adj[index].append(e_index)
Каждая строка будет иметь значение, даже если это пустой список.Таким образом, вам не нужна логика с sum
, просто добавьте строку и пустой список при вводе каждой строки.Затем добавьте ребра, если они существуют в графе.