ループ内のリスト要素にアクセスする際の IndexError の修正
ループ内のインデックスを使用してリストの要素にアクセスしようとすると、次のような結果が生じる場合があります。 IndexError や TypeError などのエラー。これらの問題を解決するには、正しいループ構造を理解することが不可欠です。
エラーの説明:
次のコードを検討してください:
<code class="python">def sumAnArray(ar): theSum = 0 for i in ar: theSum = theSum + ar[i] return theSum</code>
このコードの目的リストの値を合計します。ただし、実行すると IndexError が発生します。
ループ操作:
リストのような反復可能なオブジェクトで for ループを使用する場合、ループ変数 (この中の i case) はイテラブルの現在の要素を表します。指定されたコードでは、ループは ar の要素を反復し、i は各要素の値を受け取ります。
エラー分析:
上記のコードでは、次の場合にエラーが発生します。 ar[i] にアクセスしようとしています。これは、i の値に対応する ar の要素を取得しようとします。ただし、反復可能な for ループでは、i はインデックスではなく要素自体を表します。 i を直接使用して ar にインデックスを付けようとすると、i が範囲外 (つまり、リストの長さ以上) の場合、IndexError が発生します。
正しいループ:
このエラーを解決するには、リストの要素に正しくアクセスできるようにループを変更する必要があります。
<code class="python">for i in ar: theSum = theSum + i</code>
このバージョンでは、リスト内の要素を反復処理し、各要素の値を合計に加算し、インデックスを回避します。関連エラー。
代替解決策:
リストの要素をループし、インデックスによって要素にアクセスする別のアプローチは、リストを反復処理する代わりに範囲を使用することです。それ自体:
<code class="python">for i in range(len(ar)): theSum = theSum + ar[i]</code>
このアプローチにより、ar のすべての有効なインデックス値が確実に取得され、インデックス作成エラーが防止されます。
以上がリスト要素を合計するときにコードが IndexError をスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。