这是我的代码
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
的每个值中h
从0
开始到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
答案 0 :(得分:3)
如果LUT
不是可迭代的列表,您应该这样做:
N = len(LUT)
不是len(LUT[0])
。请确保您在len
中添加的内容为iterable
,如list
,tuple
,set
...
答案 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。