我有一个从SQLite数据库中检索数据的方法。数据保存为文本(出于某种原因),但实际上它是浮点数(14.5等)。这是我获取它们的方法:
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]
return speeds
返回以下内容:
[u'14.00', u'14.50', u'14.50', u'14.50', u'14.50', u'13.80']
但是,因为我想要简单的数字:
for i in range(0, len(speed)):
newspeeds.append(float(speed[i]))
所以现在新的回报看起来像:
[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)
这给了我以下TypeError:
Traceback (most recent call last):
if len(speed>0):
TypeError: object of type 'bool' has no len()
布尔?我非常困惑为什么我的返回列表现在是一个布尔。
答案 0 :(得分:4)
错误消息显示您写了if len(speed>0):
(请注意>0
内的len
),而不是len(speed)>0
,因为您应该写它(就像您所做的那样)在你的代码片段中。)
答案 1 :(得分:1)
看,你有一个错字,正确的方法是做if len(speed)>0:
。你自己纠正过了。
len(5>2)
在5>2
返回True
而True
没有len()