float对象在list -python的print语句中不可迭代

时间:2015-10-23 02:41:38

标签: python list iterable

任何帮助非常感谢。我在程序中有列表,其中包含X的各种值的线性函数近似值。另一个包含这些点的残差与实际的y值。列表在受尊重的函数中以相同的方式定义,并且print语句是相同的。然而对于残留的print语句,我不断得到错误:float对象不可迭代。

我不知道这是为什么或为什么这个对象与线性函数中定义的对象有任何不同。

以下是一些代码:

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))

2 个答案:

答案 0 :(得分:0)

在第一次print()来电中,您有for c in final_values。此引用来自对y_strength的调用,该list汇编并返回print()。这可以迭代。

在第二次for c in strength来电中,您有r_strength。此引用来自对print("R: ", round(strength, 2)) 的调用,它会计算并返回一个总和,即一个数字。这不能迭代。

要解决这个问题,请不要迭代它:

<ScrollView>
     <StackLayout orientation="vertical">
           <AbsoluteLayout >
               <Button top="0" left="0" right="0" text="Test" style="font-size: 10; margin:5; " />
            </AbsoluteLayout>
                <Label text="Trending Now: " cssClass="trending-label" />
                <Repeater items="{{ categories }}">
                    <Repeater.itemTemplate>
                        .
                        .
                        .
                    </Repeater.itemTemplate>
                </Repeater>
            </StackLayout>
        </ScrollView>

答案 1 :(得分:0)

您正在替换sum值,该值最初是包含另一个列表.ToList();的列表(通过函数的返回值)。

我真的不确定你为什么要使用全局变量,你可以在函数内部移动初始定义,因为你已经返回列表并将其分配给以前的参考