在Python中寻找两个稀疏向量的点积的程序
假设有两个用两个列表表示的稀疏向量。我们必须返回两个稀疏向量的点积。 向量表示为对象,并将列表存储在对象的成员变量“nums”中。
因此,如果输入如vector1 = [1,0,0,0,1],vector2 = [0,0,0,1,1],那么输出将为1。点积为1 * 0 + 0 * 0 + 0 * 0 + 0 * 1 + 1 * 1 = 1。
为了解决此问题,我们将遵循以下步骤 -
- res:= 0
-
对于向量2的nums中的每个索引i,值v,我们进行以下操作
- 如果v和0相同,则
- continue
- 否则当vector1的nums [i]与0相同时,则继续进行下一次迭代
- 继续
- 否则
- res:= res + v * vector1的nums [i]
- 如果v和0相同,则
- return res
Python示例
让我们查看以下实现以更好地理解 -
class Solution:
def __init__(self, nums):
self.nums = nums
def solve(self, vec):
res = 0
for i, v in enumerate(vec.nums):
if v == 0:
continue
elif self.nums[i] == 0:
continue
else:
res += v * self.nums[i]
return res
ob1,ob2 = Solution([1,0,0,0,1]),Solution([0,0,0,1,1])
print(ob1.solve(ob2) )
输入
[1,0,0,0,1],[0,0,0,1,1]
输出
1