2014-02-05 21 views
-1

我尝试“超出范围列表索引”创建这个索里的代码,并显示消息为什么这个源代码是“列表索引超出范围”

def main(): 
    pass 
data = [1,2,3,4,5] 
temp = data[0] 
i = 0 
n = len(data) 
while i<n: 
    data[i]=data[i+1] 
    i+=1 
print data 
if __name__ == '__main__': 
    main() 

请帮我解决了这个源代码

+0

除了代码之外,您还应该发布异常回溯。它通常包含发生错误的确切行。 –

+0

我的请求示例 –

回答

2

基本上,您可以通过将while i<n更改为while i<n-1来解决此问题。

但更好的是,变更:

i = 0 
n = len(data) 
while i<n: 
    data[i]=data[i+1] 
    i+=1 

要:

n = len(data) 
for i in range(0,n-1): 
    data[i] = data[i+1] 
data[n-1] = ... # Whatever you want to set the last entry to 

如果你想要做的就是除去第一要素,然后只需使用:

temp = data.pop(0) 
print data 
+0

如何使用while修复该源代码? –

+0

请在答案中看到第一行:“你可以通过改变'while while i

+0

ouhh对不起兄弟,我不小心:) –

1

while循环的最后一次迭代中,语句data[i+1]尝试访问列表data的不存在索引i+1

+0

我不理解,我向你请求源代码,例如 –

1

如果i的值是4,那么数据[i + 1]是指第五个索引,它没有被定义

相关问题