簡體   English   中英

索引錯誤:列表超出范圍

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM