この反復的なリスト成長コードはなぜIndexError:リスト割り当てインデックスが範囲外になるのですか?

ウラダン:

次のコードを検討してください:

i = [1, 2, 3, 5, 8, 13]
j = []
k = 0

for l in i:
    j[k] = l
    k += 1

print j

出力(Win 7 32ビット上のPython 2.6.6)は次のとおりです。

> Traceback (most recent call last): 
>     j[k] = l IndexError: list assignment index out of range

それは私にはわからない単純なものだと思います。誰かがそれを片付けることができますか?

Steve Mayne:

j空のリストです[0]が、まだ存在していない最初の反復で要素書き込もうとしています。

リストの最後に新しい要素を追加するには、代わりに以下を試してください。

for l in i:
    j.append(l)

もちろん、既存のリストをコピーすることだけが目的の場合は、実際にこれを行うことは決してありません。あなたはただやる:

j = list(i)

あるいは、他の言語の配列のようにPythonリストを使用したい場合は、その要素をnull値に設定してリストを事前に作成し(None以下の例)、後で特定の位置の値を上書きできます。

i = [1, 2, 3, 5, 8, 13]
j = [None] * len(i)
#j == [None, None, None, None, None, None]
k = 0

for l in i:
   j[k] = l
   k += 1

認識すべきことは、listオブジェクトでは存在しないインデックスに値を割り当てることができないということです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ