为什么这个源代码是“列表索引超出范围”

时间:2014-02-05 10:11:12

标签: python python-2.7

我尝试创建此源代码并显示消息“列表索引超出范围”

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()

请帮我修复此源代码

3 个答案:

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

如果i的值为4,那么,data [i + 1]指的是第五个索引,未定义