如何解决对分配了实例变量值的python变量执行操作时,实例变量会发生变化
我有一个带有两个方法的python类:构造函数和一个返回该类的两个实例之间的余弦距离的方法。但是我遇到了一个我觉得应该比较容易解决的问题,但是我终生无法确定应该怎么解决。
这是构造函数方法:
self.row = row
这些是相关的余弦距离方法的一部分:
vector1 = self.row
for n,i in enumerate(vector1):
vector1[n] = vector1[n] ** 2
vector1 = math.sqrt(sum(vector1))
问题在于,当vector1的元素平方时,self.row的元素也是如此。这会导致程序稍后出现一些问题。但是我不明白为什么self.row的元素也会发生变化,因为我不使用self.row而是使用vector1做任何事情。
如果可以的话,这里是整个方法:
def distance(self,vector):
vecsums = []
vector1 = self.row[1]
vector2 = vector.row[1]
for n,i in enumerate(vector1):
vecsums.append(vector1[n] * vector2[n])
vecsums = sum(vecsums)
for n,i in enumerate(vector1):
vector1[n] = vector1[n] ** 2
vector1 = math.sqrt(sum(vector1))
for n,i in enumerate(vector2):
vector2[n] = vector2[n] ** 2
vector2 = math.sqrt(sum(vector2))
return 1 - (vecsums / (vector1 * vector2))
这是调用distance()的代码段:
distances = []
vector_row = Vector(vectorspace[user_input])
for key in vectorspace:
vector_from_key = Vector(vectorspace[key])
distance = (key,vector_row.distance(vector_from_key))
distances.append(distance)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。