gpt4 book ai didi

python - 为什么循环在一次迭代中表现不同?

转载 作者:太空狗 更新时间:2023-10-29 21:30:46 25 4
gpt4 key购买 nike

我有这个代码:

gs = open("graph.txt", "r")

gp = gs.readline()
gp_splitIndex = gp.find(" ")
gp_nodeCount = int(gp[0:gp_splitIndex])
gp_edgeCount = int(gp[gp_splitIndex+1:-1])

matrix = [] # predecare the array
for i in range(0, gp_nodeCount):
matrix.append([])
for y in range(0, gp_nodeCount):
matrix[i].append(0)

for i in range(0, gp_edgeCount-1):
gp = gs.readline()
gp_splitIndex = gp.find(" ") # get the index of space, dividing the 2 numbers on a row
gp_from = int(gp[0:gp_splitIndex])
gp_to = int(gp[gp_splitIndex+1:-1])
matrix[gp_from][gp_to] = 1

print matrix

文件 graph.txt 包含以下内容:

5 10
0 1
1 2
2 3
3 4
4 0
0 3
3 1
1 4
4 2
2 0

前两个数字告诉我,GRAPH 有 5 个节点和 10 个边。以下数字对展示了节点之间的边。例如“1 4”表示节点 1 和 4 之间的边。

问题是,输出应该是这样的:

[[0, 1, 0, 1, 0], [0, 0, 1, 0, 1], [1, 0, 0, 1, 0], [0, 1, 0, 0, 1], [1, 0, 1, 0, 0]]

但我得到的不是那个,而是这个:

[[0, 1, 0, 1, 0], [0, 0, 1, 0, 1], [0, 0, 0, 1, 0], [0, 1, 0, 0, 1], [1, 0, 1, 0, 0]]

只有一个数字不同,我不明白为什么会这样。边“3 1”不存在。谁能解释一下,问题出在哪里?

最佳答案

for i in range(0, gp_edgeCount-1): 更改为

for i in range(0, gp_edgeCount):

range() 函数已经执行了“-1”操作。 范围(0,3)“==” [0,1,2]

并且不是缺少“3 1”边,而是缺少“2 0”边,也就是最后一个边。矩阵从 0 开始计数。

关于python - 为什么循环在一次迭代中表现不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41037827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com