繁体   English   中英

类型错误:'float' 类型的 object 没有 len()

[英]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]

错误恰恰是它所说的。 rotlatifloat 您不能采用floatlen() 查看您的代码,似乎您可能打算创建名为rotlatirotlongi 列表 ,并在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM