2

これがPythonコードの一部です(「結果」は以前に作成されたネストされたリストです)

for i in range(len(result)-1):
    try:
        result[i][3]=0
        result[i+i][0]=0
    except IndexError:
        print "fail", result[i][3], result[i+1][0], i, len(result)
return result

驚いたことに、これは「失敗」を出力することがよくあります(iの値が明らかにならない場合、len(result)、たとえば24、31)。どのようにすることができます

result[i][3]=0
result[i+i][0]=0

次の場合、IndexError例外を生成します

print result[i][3], result[i+1][0]

ではない?

4

1 に答える 1

9

i + iインデックスにアクセスしていますが、次のようなものではありません i + 1

result[i+i][0]=0

これは、リストのサイズに関係なく、到達i // 2 + 1するまでにインデックスエラーが発生することを意味します。

于 2012-10-15T20:18:49.967 に答える