1

我得到一个 TypeError: list indices must be integers or slices, not float on the Fourth line of code 当我运行它时。nums 和 nums2 只是要求用户提供一个数字列表,这些数字将用于计算我提供的代码中的内积。

def innerproduct(nums, nums2):
    for i in nums:
        if i in nums2:
            sum +- nums[i] * nums2[i]
    return innerproduct

我不确定为什么会发生此错误以及如何解决此问题,因此不胜感激。

4

2 回答 2

0

for i in nums意味着i将值存储在 nums 列表中,而不是索引中。

例如,如果 nums = [1.5, 6.2, 0.1] 那么我将会1.5并且nums[i]正在抛出该错误。

要么你可以做得到for i in range(len(nums)):nums[i]只是for i in nums然后 sum +=i而不是nums[i]

于 2021-04-26T03:03:57.677 回答
0

扩展 Shubham 的答案,

使用以下代码段更新您的代码,您的代码将起作用

def innerproduct(nums, nums2):
    sm = 0
    for i,num in enumerate(nums): # enumerate returns index of item & actual item
        if num in nums2:
            sm += num * nums2[i]
    return sm
于 2021-04-26T03:10:08.700 回答