【问题标题】:float object not iterable in print statement for list -python浮动对象在列表-python的打印语句中不可迭代
【发布时间】:2016-01-22 11:59:00
【问题描述】:

非常感谢任何帮助。我在一个程序中有一个列表,一个包含 X 的各种值的线性函数近似值。另一个包含这些点到实际 y 值的残差。列表在相关函数中的定义方式相同,打印语句也相同。然而对于剩余的打印语句,我不断收到错误消息:float object is not iterable。

我不明白为什么会这样,或者为什么这个对象与线性函数中定义的对象有任何不同。

这里有一些代码:

final_values = []
def y_strength(X):
    for x in X:
        f = (m * x) + b
        global final_values 
        final_values.append(f)
    return final_values 

final_values = y_strength(X)        

strength = []
final_r = []
def r_strength(Y):
    global strength
    for y in Y:
        r = y - lin_funct
        strength.append(r)

    for r in strength:
        r = r ** 2
        final_r.append(r)

    relationship = sum(final_r)   
    return relationship
strength = r_strength(Y)

def(print()):
     print("f(x):","\t".join(str(round(float(c),2)) for c in final_values))
     print("-"*70)
     print("R:   ","\t".join(str(round(float(c),2)) for c in strength))

【问题讨论】:

    标签: python list iterable


    【解决方案1】:

    在第一个print() 调用中,您有for c in final_values。此引用来自对y_strength 的调用,它组装并返回list。这可以迭代。

    在第二个print() 调用中,您有for c in strength。此引用来自对r_strength 的调用,它计算并返回一个总和,它是一个数字。这不能重复。

    要解决这个问题,只需不要对其进行迭代:

    print("R:   ", round(strength, 2))
    

    【讨论】:

    • 抱歉整个站点的新手我不知道如何获取代码,但我只是将 r_strength 函数分成两个不同的函数。一个代表力量,一个代表final_r
    【解决方案2】:

    您将 strength 值替换为另一个列表的 sum 值(通过函数的返回值)。

    我实际上根本不确定您为什么要使用全局变量,您可以只在函数内移动初始定义,因为您已经返回列表并将其分配给先前的引用。

    【讨论】:

    • 程序中还有其他函数在使用它们。此外,如果不是全球性的,那么我在打印声明中遇到了许多识别它的问题。它适用于全球
    猜你喜欢
    • 2018-05-15
    • 2023-03-09
    • 2014-03-16
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2012-08-24
    相关资源
    最近更新 更多