什么是列表分配索引超出范围

时间:2015-03-07 02:13:13

标签: python

我有以下代码:

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:列表分配索引超出范围

我想保持上面的循环运行,将数字分配给数组,而不会遇到我不理解的上述错误。

谢谢。

1 个答案:

答案 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长。