索引错误:列表超出范围
问题描述:
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 [1] [2] 具有索引错误,列表超出范围索引错误:列表超出范围
请帮助 由于事先
答
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]
答
假设我的界限为10然后上的最后一次运行while循环j是9,现在你有l = j + 1,所以l将是10,但是你的10行m被索引为0..9,所以m [l] [2]将给出索引错误。
此外,你的代码看起来好了很多,如果你刚刚添加的元素到列表中一气呵成,即:
X = X + J,M [J] [2],M [K] [2],m [l] [2],p]
空格是一个眼睛最好的朋友!
+1
+1:Spaces *是*眼睛最好的朋友! – Johnsyweb 2010-05-27 03:55:28
请解释你正在尝试做什么,以及你想要回答什么问题。此外,格式化您的代码。 – vezult 2010-05-27 03:16:32
您赢得了额外的积分,用于制造无法读取的Python代码。 * facepalm * – jathanism 2010-05-27 03:54:29
呃,可能是我见过的最丑陋的Python代码。你在做什么? – 2010-05-27 06:41:05