IndexError:当尝试从1开始范围时,列表索引超出范围

时间:2016-11-02 16:41:21

标签: python list

我有以下工作代码。

b=4
c=4
mylist = []
for s in range(b):
    mylist.append([])
    for g in range(c):
        mylist[s].append(0)       
print mylist

,它给出了以下输出。

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

但是根据我的要求,我想从第一个元素开始范围。因此我编写了如下代码:

b=4
c=4
mylist = []
for s in range(1,b):
    mylist.append([])
    for g in range(1,c):
        mylist[s].append(0)       
print mylist

但是这给了我错误

IndexError: list index out of range

我不明白为什么。如果您知道原因,请澄清。

感谢。

3 个答案:

答案 0 :(得分:0)

列表基于零,第一个附加始终创建l[0]。你需要修改你的指数;

b=4
c=4
mylist = []
for s in range(1,b):
    mylist.append([])
    for g in range(1,c):
        mylist[s-1].append(0)   # have to subtract 1 to get back to zero-based index    
print mylist

你的输出看起来像这样;

[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

答案 1 :(得分:0)

for s in range(1,b):
    mylist.append([])
    for g in range(1,c):
        mylist[s].append(0) 

在此循环中,您将空列表附加到mylistmylist因此只有一个元素,但在第二个循环中,您在mylist[1]时尝试访问s == 1。这就是您获得索引错误的原因。

希望这有帮助!

答案 2 :(得分:0)

我们知道python列表从0开始。 您可以在索引0处添加一个虚拟对象,从1开始,然后在结尾处弹出

您的代码必须像这样

 b=4
 c=4
 mylist = ['dummy']
     for s in range(1,b):
           mylist.append([])
           for g in range(1,c):
                 mylist[s].append(0) 
 mylist.pop(0)
 print mylist