我有以下工作代码。
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
我不明白为什么。如果您知道原因,请澄清。
感谢。
答案 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)
在此循环中,您将空列表附加到mylist
。 mylist
因此只有一个元素,但在第二个循环中,您在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