如何利用python中变量的强大功能

如何利用python中变量的强大功能,python,python-2.7,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的每个值处存储该方程的值的列表,其中h从0开始到N。当我运行这个脚本时,我得到的“int”对象是不可编辑的。我做错了什么 这是堆栈跟踪 in prb_table(LUT, P) 152 def prb_table(LUT, P):

这是我的密码

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”对象是不可编辑的
。我做错了什么

这是堆栈跟踪

    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

如果
LUT
不是iterables列表,则应执行以下操作:

N = len(LUT)
len(LUT[0])
。确保放入
len
中的是一个
iterable
,就像您想要的
列表、元组、集合一样

N = len(LUT)
…或者你需要弄清楚你想得到的长度。 len()的参数需要是某种序列,如列表或元组。
LUT[0]似乎是一个单独的元素,而不是一个列表,如果它给了您这个错误。

您提供的代码是正确的。错误在调用此函数之前的其他地方。特别是
LUT[0]
不是您所给出的


不知何故,
LUT[0]
是一个整数,而不是一个列表,因此在调用函数的代码段中的某个地方,在进入该函数之前存在一个bug。

它对我来说工作正常。当N=5和P=7时,结果x是[-77769072,-1058412348,-1440616807]如果LUT是一个整数列表,那么
LUT[0]
将是一个整数,那么
len(LUT[0])
将没有意义。LUT是一个列表列表,所以我想要的是内部列表的长度,而不是外部列表的长度。@motaha
LUT
中有什么值,您能在这里打印吗?请在您打印之前先打印
LUT[0]
。很明显,计算机所认为的LUT
LUT
并不是你所知道的。几乎可以肯定,在调用
prb_表
之前会发生错误。