我有两个函数和一个包含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
:
:
如果我取消注释lope_array [i] [0] = 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
P.S。 -如果这是一个愚蠢的问题或我做过愚蠢的事情,我谨此致歉。
答案 0 :(得分:0)
来自@TrebledJ的评论 即使您将列表传递到斜率函数中,由于只制作了浅表副本,lope_array [i] [0] = ...仍会修改列表变量。当i = 0时,您的第一个数据点将一直以∞向上/向下移动
阅读python的python浅表概念。