我正在解决经典的Dijkstra问题!

我有一组节点/坐标。我正在遍历它们,以查看它们是否在给定的radius之内。

x = np.empty([0, 3], dtype=float)
for j in range(len(Coord)):
    for k in range(len(Coord)):
        a = np.sqrt(((Coord[j][0] - Coord[k][0]) ** 2) + ((Coord[j][1] - Coord[k][1]) ** 2))
        if a < radius and a != 0:
            y = np.array([j, k, a])
            x = np.vstack((x, y))


其中Coord是坐标的array

这给了我正确的值,但是由于0-> 3与3-> 0相同,所以我得到了大量重复数据。这是问题所在。数据应该是唯一的。

最佳答案

一种可能性是在外循环的位置开始内循环:

for j in range(len(Coord)):
    for k in range(j,len(Coord)):
       [loop body]


range函数中的高位开始将排除j大于k的所有值对,从而防止任何重复而不排除任何非重复的值。

关于python - 消除嵌套for循环处理的数据中的重复值(节点),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35118446/

10-15 02:04