如何在python中实现变量的强大功能

时间:2015-08-18 23:39:20

标签: python python-2.7

这是我的代码

LUT = [[1,0,0,1,1],[1,1,1,1,1]]
N = len(LUT[0])
P = 0.1
x = [((P)**h)*((1-P)**(N-h)) for h in range (0, N+1)]

x是列表,我希望将此等式的值存储在h的每个值中h0开始到N。当我运行此脚本时,我得到'int' object is not iterable。我做错了什么?

这是堆栈跟踪

    in prb_table(LUT, P)
    152 def prb_table(LUT, P):
    153         N=len(list(LUT[0]))
--> 154         x = [((P)**h)*((1-P)**(N-h)) for h in range (0, N+1)]
    155         return x

    TypeError: 'int' object is not iterable

3 个答案:

答案 0 :(得分:3)

如果LUT不是可迭代的列表,您应该这样做:

N = len(LUT)

不是len(LUT[0])。请确保您在len中添加的内容为iterable,如listtupleset ...

答案 1 :(得分:2)

你要么

N = len(LUT)

......或者需要弄明白你到底想要的长度。 len()的参数需要是某种序列,如列表或元组。 LUT [0]似乎是单个元素,如果它给你那个错误,则不是列表。

答案 2 :(得分:2)

您提供的代码是正确的。在调用此函数之前,错误位于其他位置。特别是 if(element.attr("name") == "id"){ error.css( "left", "180px" ); error.css( "min-width", "70px" ); error.css( "max-width", "120px" ); } 不是你给的。

不知怎的LUT[0]是一个整数而不是一个列表,所以在调用你的函数的代码片段的某个地方,在进入这个函数之前就有一个bug。