【发布时间】:2011-07-21 02:47:09
【问题描述】:
我们在计算机科学课上编写了一个小脚本,用于找到通过节点网格的最短路径,有些是相互连接的,有些不是。 网格数据以不需要定义任何新类的方式存储,即在嵌套列表中。对于 n 个节点,列表应该有 n 个元素,每个元素都是一个包含 n 个元素的列表。
grid[a][b] 应返回节点 a 到节点 b 的距离,如果节点未连接或 a 和 b 引用同一节点,则返回 0。
例如,[[0,2,2],[2,0,2],[2,2,0]] 列表将定义一个包含 3 个节点的网格,每个节点之间的距离为 2。
这是我编写的脚本,它应该通过向用户请求单独的距离来定义这样的网格:
def makegrid(nodes):
res=[[0]*nodes]*nodes
for i in range(nodes):
for j in range(nodes):
if res[i][j]==0 and not i==j:
x=raw_input('distance node %d zu node %d: ' % (i,j))
if x:
res[i][j]=res[j][i]=int(x)
else:
res[i][j]=res[j][i]=None
for i in range(nodes):
for j in range(nodes):
if res[i][j] is None:
res[i][j]=0
return res
我的问题是该功能并没有完全按照我的意图去做,而且我似乎无法找出原因。它实际上所做的只是运行对第一个节点的请求,并且以某种方式对所有子列表执行它应该只对第一个节点执行的操作(并且忽略不应该更改第一个元素)。
谁能帮我弄清楚?
【问题讨论】:
标签: python