次のコードを検討してください。
i = [1, 2, 3, 5, 8, 13]
j = []
k = 0
for l in i:
j[k] = l
k += 1
print j
出力(Windows 7 32ビット上のPython 2.6.6)は次のとおりです。
> Traceback (most recent call last):
> j[k] = l IndexError: list assignment index out of range
私は理解できない単純なことだと思います。誰かがそれを片付けることができますか?
j
は空のリストですが、最初の繰り返しで要素[0]
に書き込もうとしていますが、まだ存在していません。
リストの最後に新しい要素を追加するには、代わりに次のことを試してください。
for l in i:
j.append(l)
あなたの他のオプションはj
を初期化することです:
j = [None] * len(i)
j[k] = l
の代わりにj.append(l)
を実行し、k
をまったく避けてください。
リスト内包表記を使うこともできます。
j = [l for l in i]
または次の文を使ってそのコピーを作成します。
j = i[:]
j.append(l)
また、小文字の "L"は、1と混同しやすいので、使用しないでください。
私はあなたが探しているのはPythonのメソッドinsertだと思います。
位置xに要素xを挿入します。
array = [1,2,3,4,5]
array.insert(1,2)
print(array)
# prints [1,2,2,3,4,5]
Jに辞書(連想配列に似たもの)を使うことができます
i = [1, 2, 3, 5, 8, 13]
j = {} #initiate as dictionary
k = 0
for l in i:
j[k] = l
k += 1
print j
印刷されます:
{0: 1, 1: 2, 2: 3, 3: 5, 4: 8, 5: 13}
もう一つの方法:
j=i[0]
for k in range(1,len(i)):
j = numpy.vstack([j,i[k]])
この場合、j
は派手な配列になります
配列付きのpythonでは、要素を配列に追加して追加することしかできません。
多分あなたは必要ですextend()
i=[1,3,5,7]
j=[]
j.extend(i)
Jを空のリストとして割り当てており、ループ内でjの0番目のインデックス値を見つけようとしているので、確実に機能しません。 j.append(l)を試してくださいこれは動作します。