You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python报TypeError: 'float' object is not subscriptable的原因是什么

报错原因

你在__init__方法中对size=(1,2)的numpy数组调用tolist()后得到的结果是[[x, y]]格式的二维嵌套列表,随后你使用[0]索引取出了内层列表,最终self.location实际是[x, y]格式的一维列表,两个元素均为float类型。
而你在f方法中使用self.location[0][0]的写法,相当于先取出一维列表的第一个float元素,再尝试对float类型做下标访问,自然会触发'float' object is not subscriptable的报错。

修复方案
  • 方案1:修改f方法中的取值逻辑,适配一维列表的结构:
def f(self, obj):
    return sqrt((self.location[0] - obj.location[0]) ** 2 + (self.location[1] - obj.location[1]) ** 2)
  • 方案2:修改__init__中的赋值逻辑,保留二维列表结构,适配原有f方法的写法:
def __init__(self, location = None):
    self.id = next(MyClass.id)
    self.location = np.random.uniform(0, 1, size=(1, 2)).tolist()

内容的提问来源于stack exchange,提问作者user1393214

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:15:01