[英]TypeError: object of type 'float' has no len()
这里发生了什么?
这是错误:
for j in range(len(rotlati)):
TypeError: object of type 'float' has no len()
代码是:
vv = np.matrix([0, 0]).T
rotlati = float(vv[0])
latidef = np.zeros(22)
for j in range(len(rotlati)):
latidef[j] = rotlati[j]
错误恰恰是它所说的。 rotlati
是float
。 您不能采用float
的len()
。 查看您的代码,似乎您可能打算创建名为rotlati
和rotlongi
列表 ,并在range(len(lati))
循环的每次迭代rotlongi
它们追加到列表中 。 相反,您当前只是在每次迭代中覆盖相同的两个浮点变量。
len参数可以是序列(字符串,元组或列表)或映射(字典)。 https://docs.python.org/2/library/functions.html#len
在调用len函数之前,您应该验证参数是否为这种类型之一。 您可以调用方法isinstance()进行验证。 看一下如何使用它。 https://docs.python.org/2/library/functions.html#isinstance
我得到了正确的答案,请尝试以下操作:
lloyd = {
"name": "Lloyd",
"homework": [90.0, 97.0, 75.0, 92.0],
"quizzes": [88.0, 40.0, 94.0],
"tests": [75.0, 90.0]
}
alice = {
"name": "Alice",
"homework": [100.0, 92.0, 98.0, 100.0],
"quizzes": [82.0, 83.0, 91.0],
"tests": [89.0, 97.0]
}
tyler = {
"name": "Tyler",
"homework": [0.0, 87.0, 75.0, 22.0],
"quizzes": [0.0, 75.0, 78.0],
"tests": [100.0, 100.0]
}
numbers = []
def average(numbers):
total = float(sum(numbers))
return total / len(numbers)
另一种情况下,我在保存文件时遇到了同样的错误。
odf.to_excel(writer,sheet_name = str(x),startcol = 5,index = False)
您还可以检查工作表的名称是int还是float。 将其转换为字符串。
由于意外/“隐藏”的 NaN 值而导致此错误很常见。
例如,假设您有一个在别处处理过的字符串列表或 pandas 系列(或任何集合),并且您想要查找每个字符串的长度。 如果此列表包含 NaN,则会出现标题中的错误。
lst = ['hello', float('nan'), 'hola'] # <---- has NaN
[len(x) for x in lst] # <---- TypeError: object of type 'float' has no len()
您可能有自己的方式来处理这些 NaN。 对我来说,一种方法是执行条件检查并仅在不是 NaN 时才调用len()
。
例如,下面的代码仅在元素等于自身(NaN 不等于自身)时才查找元素的长度,否则什么也不做。
[len(x) if x == x else x for x in lst]
# [5, nan, 4]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.