Skip to main content
 首页 » 编程设计

python之为什么我会收到类型错误 : float when I try to iterate my list

2025年05月04日14sky-heaven

所以我在这里解决了我有点尴尬的错误:What is happening with my types, TypeError? (Python)

现在我得到了另一个。

我检索数据的方法:

def retrieveSpeeds(databasepath, someid): 
     con = lite.connect(databasepath) 
     with con: 
        cur = con.execute("SELECT speed FROM speeds WHERE id = someid") 
        speeds = [x[0] for x in cur] 
        for i in range(0, len(speed)): 
            newspeeds.append(float(speed[i])) 
     return speeds 

所以返回看起来像:

[14.0, 14.5, 14.5, 14.5, 14.5, 13.8] 

我的主要做法是:

maxspeeds = [] 
for id in userid: 
    speed = retrieveSpeeds(databasepath, id) 
    if len(speed)>0: 
           maxspeeds.append(max(speed)) 
for i in range(0,len(maxspeeds)): 
    if maxspeeds[i] > 40: 
          maxspeeds = maxspeeds.pop(i) 

现在我的新问题是:

    Traceback (most recent call last): 
    if maxspeeds[i]>40: 
    TypeError: 'float' object has no attribute '__getitem__' 

怎么突然想到我的list是float对象呢?我还会犯更多错误吗?

请您参考如下方法:

您正在将 maxspeeds 分配给 maxspeeds.pop(i) 的输出,它返回一个 number,它是 popped 项目。相反,不要为输出分配任何内容:

maxspeeds = [] 
for id in userid: 
    speed = retrieveSpeeds(databasepath, id) 
    if len(speed)>0: 
           maxspeeds.append(max(speed)) 
for i in range(0,len(maxspeeds)): 
    if maxspeeds[i] > 40: 
          maxspeeds.pop(i) #Here 

.pop返回已删除项目的索引,因此当您将列表分配给该输出时,列表成为索引(整数)。