0

このプログラムを 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]
4

2 に答える 2

1

ファイルの行数が 999 行未満のように見えるため、bl十分に大きくなりません。例外処理を追加するか、事前に最大インデックスを計算するか、要素を別の方法で反復します。

于 2012-07-02T18:32:31.767 に答える
0

反復しているリストから項目を削除しないでください。

最初に をチェックしてbl[0][0]から を削除するbl[0][0]と、後のものが下にシフトされます。現在、リストには 999 個のアイテムがあります。

bl[0][1]次に、以前は をチェックしていましたbl[0][2](オリジナル bl[0][1]は現在bl[0][0]です)。

等々。

最終的にcが 500 のとき、リストには 500 項目しかありません。IndexError!

于 2012-07-02T19:47:30.013 に答える