2017-07-03 6 views
-1

私は、pupsと呼ばれる2次元配列の特定のIDを探すプログラムを持っています。そうすると、リストインデックス外のエラーでプログラムがクラッシュします。事前のおかげで -リストインデックスの範囲外のPython - 2D配列

for i in range(1,len(pups)): # start from 1 as the first row contains the labels 
    if pups[i][0]==ID: 
     report=pups[i] 
     pups.pop(i) 
     succesful=True 

私のpythonに新しいですので、私は愚かなミスを犯した場合、あなたが私に言うことができれば、私は喜んでいると思います。ここでは、当該コードのセクションです。

+2

あなたはそれを反復しているとしてリストを変異させないでください( 'pups' – CoryKramer

+1

Pythonのコメント文字は '#'です – Will

+0

ああ私は見る - 答えが –

答えて

-1

あなたが今やっていることは、繰り返しを繰り返すうちにリストの要素を削除することです。リストのサイズは縮小し続けますが、同じ範囲で繰り返すことができます。参照しようとしているインデックスが実際には範囲外である状況が発生します。

あなたには、いくつかの述語に基づいてリストをフィルタリングしたい場合、あなたはこのように、リストの内包表記を使用することができます。

filtered_pups = [pup for pup in pups if pup[0] == ID] 
関連する問題