我有两个函数和一个包含X和Y坐标的数组。其中一个函数用于计算斜率,另一个函数用于确定共线性。有一些奇怪的行为正在发生。如果我遗漏了一些显而易见的东西,我道歉。
def slope(list, a, b):
slope = 0
#vertical line
if(list[a][0] == list[b][0]):
slope = float("inf")
if(list[a][1] == list[b][1]):
slope = float("-inf")
else:
slope = (list[b][1] - list[a][1])/(list[b][0] - list[a][0])
return slope
def FastCollinearPoint(list):
slope_array = list
#print(slope_array[0][1])
for i in range(len(list)):
ss = slope(list, 0 ,i)
print(ss)
#slope_array[i][0] = ss
电流输出-
-inf
2.0
0.5
4.5
2.0
1.0
1.2142857142857142
2.5
:
:
如果我取消对行slope_arrayi = ss的注释,输出将变为-
-inf
-0.0
-0.0
-0.0
-0.0
-0.0
-0.0
-0.0
-0.0
-0.0
0.0
-0.0
-0.0
-0.0
0.0
:
:
当我将之前计算的变量赋给一个新变量时,我不明白它的值是如何变化的。下面是完整的代码- https://pastebin.com/SxYjs0jY
下面是链接中提到的输入文件- https://pastebin.com/EMHBWxqT
附言-如果这是一个愚蠢的问题,或者我做了什么愚蠢的事情,我真诚地提前道歉。
发布于 2019-06-10 01:08:59
来自@TrebledJ的注释,即使您正在将列表传递到斜率函数,slope_arrayi = ...仍然修改你的列表变量,因为只做了一个浅拷贝。当i=0时,您的第一个数据点将在∞处一直向上/向下移动
阅读python浅层列表中的python概念。
https://stackoverflow.com/questions/56516493
复制相似问题