我试图在python中运行这个程序,但它一直给我一个错误,列表索引超出了if语句行的范围。但它确实打印出“必须找到的匹配”。
import csv
with open('/Users/jadhav/Documents/Hubble files/m4_hubble_1.csv') as f:
bl = [[],[],[],[],[]]
reader = csv.reader(f)
for r in reader:
for c in range(5):
bl[c].append(r[c])
print "The files have now been sorted into lists"
for c in range(0,999):
if bl[4][c] == "HST_10775_64_ACS_WFC_F814W":
print "match found"
else:
del bl[0][c]
del bl[1][c]
del bl[2][c]
del bl[3][c]
del bl[4][c]
答案 0 :(得分:1)
看起来这些文件的行少于999行,因此bl
增长不足。添加异常处理,预先计算最大索引或以不同方式迭代元素。
答案 1 :(得分:0)
您不应该从正在迭代的列表中删除项目。
首先,您检查bl[0][0]
,然后删除bl[0][0]
,导致后续版本向下移动。现在列表中有999个项目。
然后您检查bl[0][1]
,之前为bl[0][2]
(原bl[0][1]
现为bl[0][0]
)。
等等。
最终,当c
为500时,列表中只有500个项目。 IndexError
!