首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有人能解释一下为什么会发生这种情况吗?

有人能解释一下为什么会发生这种情况吗?
EN

Stack Overflow用户
提问于 2019-06-10 00:44:23
回答 1查看 39关注 0票数 0

我有两个函数和一个包含X和Y坐标的数组。其中一个函数用于计算斜率,另一个函数用于确定共线性。有一些奇怪的行为正在发生。如果我遗漏了一些显而易见的东西,我道歉。

代码语言:javascript
复制
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

电流输出-

代码语言:javascript
复制
-inf
2.0
0.5
4.5
2.0
1.0
1.2142857142857142
2.5
:
:

如果我取消对行slope_arrayi = ss的注释,输出将变为-

代码语言:javascript
复制
-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

附言-如果这是一个愚蠢的问题,或者我做了什么愚蠢的事情,我真诚地提前道歉。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-10 01:08:59

来自@TrebledJ的注释,即使您正在将列表传递到斜率函数,slope_arrayi = ...仍然修改你的列表变量,因为只做了一个浅拷贝。当i=0时,您的第一个数据点将在∞处一直向上/向下移动

阅读python浅层列表中的python概念。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56516493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档