有人可以解释为什么会这样吗?

时间:2019-06-09 16:44:23

标签: python arrays python-3.x variables return-value

我有两个函数和一个包含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。 -如果这是一个愚蠢的问题或我做过愚蠢的事情,我谨此致歉。

1 个答案:

答案 0 :(得分:0)

来自@TrebledJ的评论 即使您将列表传递到斜率函数中,由于只制作了浅表副本,lope_array [i] [0] = ...仍会修改列表变量。当i = 0时,您的第一个数据点将一直以∞向上/向下移动

阅读python的python浅表概念。