为什么我在尝试迭代我的列表时遇到类型错误:浮点型?

2024-09-27 04:26:00 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在这里整理了一下我的小失误: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__'

为什么它突然认为我的列表是一个浮动对象?我又犯了什么错?你知道吗


Tags: pathinidforlenifwithcon
2条回答

您正在将maxspeeds赋值给maxspeeds.pop(i)的输出,该输出返回一个数字,它是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

^{}返回已删除项的索引,因此当您将列表分配给该输出时,列表将成为索引(整数)。你知道吗

这条线:

maxspeeds = maxspeeds.pop(i)

maxspeeds重新绑定到表达式maxspeeds.pop(i)的值,它是一个浮点值。你知道吗

相关问题 更多 >

    热门问题