我有以下代码:
m=[[1,0],[0,0],[0,1],[1,1],[0,1]]
e=[[0 for x in range(5)]]
for i in range (0,len(m),1):
for j in range(0,len(m)+2,1):
print m
if m[0][0]==1 and m[0][1]==0:
e[j]=2
elif m[1][0]==0 and m[1][1]==1:
e[j]=1
elif m[2][0]==0 and m[2][1]==0:
e[j]=0
elif m[4][0]==0 and m[4][1]==1:
e[j]=3
print e
我收到错误:
IndexError:列表分配索引超出范围
我想保持上面的循环运行,将数字分配给数组,而不会遇到我不理解的上述错误。
谢谢。
答案 0 :(得分:1)
正确显示您的代码会有所帮助,在一行中很难阅读。
你做e [j] = 3.你已经定义了e = [[0 for x in range(5)]],这意味着e == [[0,0,0,0,0]] ,它是1个元素的列表,其唯一元素是5个元素的列表。因此,您可以对e进行的唯一分配是e [0] =某事。在循环中,j取值大于0。
在python中,如果你有一个列表a = [1,2]你不能做[5] = 3,因为列表不是6长。