[英]index error:list out of range
from string import Template
from string import Formatter
import pickle
f=open("C:/begpython/text2.txt",'r')
p='C:/begpython/text2.txt'
f1=open("C:/begpython/text3.txt",'w')
m=[]
i=0
k='a'
while k is not '':
k=f.readline()
mi=k.split(' ')
m=m+[mi]
i=i+1
print m[1]
f1.write(str(m[3]))
f1.write(str(m[4]))
x=[]
j=0
while j<i:
k=j-1
l=j+1
if j==0 or j==i:
j=j+1
else:
xj=[]
xj=xj+[j]
xj=xj+[m[j][2]]
xj=xj+[m[k][2]]
xj=xj+[m[l][2]]
xj=xj+[p]
x=x+[xj]
j=j+1
f1.write(','.join(x))
f.close()
f1.close()
它说第33行,xj = xj + m [l] [2]有索引错误,列表超出范围
请提前帮助谢谢
假设i为10,则在while循环的最后一次运行j为9时,现在您有l = j +1,因此l将为10,但是m中的10行索引为0..9,因此m [l] [2]将给出索引错误。
另外,如果您将元素一次性添加到列表中,则代码看起来会好很多,即:
x = x + [j,m [j] [2],m [k] [2],m [l] [2],p]
空间是眼睛最好的朋友!
IndexError
异常(列表索引超出范围)意味着您试图使用超出数组范围的索引访问数组。 您可以使用以下简单示例查看实际运行情况:
>>> a = [1, 2, 3]
>>> a[2]
3
>>> a[3]
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IndexError: list index out of range
我不能完全遵循您的代码,但是该错误意味着:
l
超出m
的范围,或者 2
超出m[l]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.