2016-11-02 8 views
-3

私は以下の作業コードを持っています。IndexError:1から範囲を開始しようとすると、リストインデックスが範囲外になる

b=4 
c=4 
mylist = [] 
for s in range(b): 
    mylist.append([]) 
    for g in range(c): 
     mylist[s].append(0)  
print mylist 

これは、以下の出力を与える。

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] 

私の要件では、最初の要素から範囲を開始したいと考えています。したがって、次のように私はコードを書いた:

b=4 
c=4 
mylist = [] 
for s in range(1,b): 
    mylist.append([]) 
    for g in range(1,c): 
     mylist[s].append(0)  
print mylist 

をしかし、これは私が理由を理解していないエラー

IndexError: list index out of range 

を与えています。理由を知っているかどうかを明確にしてください。

ありがとうございました。

+6

のようにする必要があります1要素リストの2番目の要素にアクセスしようとしています。あなたは '[]] [1]'をやっています。 –

+1

"最初の要素から範囲を開始します。"つまり、ゼロインデックスを使用しています。あなたはあなたの希望する出力の例を挙げることができますか? – brianpck

+0

ゼロを含むリストを作成したいが、そのリストがインデックス1から始まるようにしたいと思う。そうだろうか? – Rodolfo

答えて

0

リストはゼロベースです。最初の追加は常にl[0]を作成します。あなたはあなたの指数を修正する必要があります。

b=4 
c=4 
mylist = [] 
for s in range(1,b): 
    mylist.append([]) 
    for g in range(1,c): 
     mylist[s-1].append(0) # have to subtract 1 to get back to zero-based index  
print mylist 

出力は次のようになります。このループでは

[[0, 0, 0], [0, 0, 0], [0, 0, 0]] 
0
for s in range(1,b): 
    mylist.append([]) 
    for g in range(1,c): 
     mylist[s].append(0) 

、あなたはmylistに空のリストを追加しています。 mylistには1つの要素しか含まれていませんが、2番目のループ内では、s == 1のときにmylist[1]にアクセスしようとしています。このため、インデックスエラーが発生しています。

希望すると便利です。我々は0 からPythonのリストの開始を知っているよう

0

あなたは1から開始するインデックス0でダミーのオブジェクトを追加することができ、その後最後にそれをポップ

あなたのコードは、まあ、この

b=4 
c=4 
mylist = ['dummy'] 
    for s in range(1,b): 
      mylist.append([]) 
      for g in range(1,c): 
       mylist[s].append(0) 
mylist.pop(0) 
print mylist 
関連する問題