ホームページ > バックエンド開発 > Python チュートリアル > リスト要素を合計するときにコードが IndexError をスローするのはなぜですか?

リスト要素を合計するときにコードが IndexError をスローするのはなぜですか?

Linda Hamilton
リリース: 2024-10-31 06:31:02
オリジナル
573 人が閲覧しました

Why Does My Code Throw an IndexError When Summing List Elements?

ループ内のリスト要素にアクセスする際の 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート