2016-09-27 22 views
-1
seq_sum = [] 
for i in range(len(sequence)): 
    seq_sum[i] = sequence[i] + inv_sequence[i] 
print (seq_sum) 

このコードを実行しようとすると、リスト割り当てインデックスが範囲外です。どのように問題を解決できますか? シーケンスとinv_sequenceは整数の配列です。Pythonエラー:インデックスの範囲外

+2

が、 '範囲(LEN(シーケンス))は、'ここでアンチパターンのビットです。 'zip'組み込み:' seq_item、inv_seq_item for zip(sequence、inv_sequence):... '(@ DeepSpaceの解説を参照してください)を調べてください。 –

+0

@decezeちょうど 'range()'がここで処理されることを実現しました。 – Torxed

答えて

8

seq_sum[i]は、seq_sumリストが空であるため、IndexErrorを発行します。あなたは代わりにappendを使用する必要があります。

seq_sum = [] 
for i in range(len(sequence)): 
    seq_sum.append(sequence[i] + inv_sequence[i]) 
print(seq_sum) 

をあなたはリストの内包表記を使用してきれいコードで同じ結果を得ることができます。

seq_sum = [seq_elem + inv_elem for seq_elem, inv_elem in zip(sequence, inv_sequence)] 

ます。またmapを使用することができますが、いくつかは、その読みやすさを主張するだろう:

import operator 
seq_sum = list(map(operator.add, sequence, inv_sequence)) 
1

seq_sumを空のリストと宣言しました。 0以外の位置で試してみると、IndexErrorになります。

リストを拡大すると、実質的にappend ing、extend ingまたはsliceの割り当てが行われます。 アクセスエレメントのため、これについてはseq_num.appendが最善の方法です。

seq_sum[i] = sequence[i] + inv_sequence[i] 

は、代わりに次のように変更します。:ある

あなたの質問に関係のない

seq_sum.append(sequence[i] + inv_sequence[i]) 
関連する問題