Python TypeError:列表索引必须是整数或切片,而不是浮点错误

问题描述

我收到一个类型错误:列表索引必须是整数或切片,当我运行它时,不能在代码的第四行浮动。 nums 和 nums2 只是要求用户提供一个数字列表,这些数字将用于计算我提供的代码中的内积。

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

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

解决方法

for i in nums 表示 i 会将值存储在 nums 列表中,而不是索引中。

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

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

,

扩展舒巴姆的回答,

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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...