矩阵列表索引超出范围

时间:2016-05-22 23:06:54

标签: python indexing

我创建了一个这样的矩阵:

b = [[0 for y in range(1,4)] for x in range(1,3)]

我希望索引b[1:2][1:3]可用,但上面的代码似乎没有这样做。

range(1,4)应该返回1到3之间的数字,range(1,3)应该返回数字1和2.

当我尝试将值赋给b[1][3]时,我得到一个IndexError。对此有何解释?

1 个答案:

答案 0 :(得分:0)

range(1,4)是长度为3的列表,因此[0 for y in range(1,4)]也是如此。可用于列表的索引总是从0到列表长度减1.如果您想要替代索引使用字典。

>>> range(1, 4)
[1, 2, 3]
>>> for x in range(1, 4):
...     print(x)
...     
1
2
3
>>> L = [0 for y in range(1, 4)]
>>> L
[0, 0, 0]
>>> L[0]
0
>>> L[1]
0
>>> L[2]
0
>>> L[3]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
IndexError: list index out of range