2016-11-07 7 views
0

forループを作成しようとしています。ここでは、ループのインデックスをリストの要素に使用します。ここに私のコードは次のとおりです。ループのdoubleで予期しない開始インデックス

a1 = [] 
a2 = [] 
for i in range(1, 91, 2): 
    for j in range(1, i, 2): 
     a1.append(float(i)) 
     a2.append(float(j)) 

理想的には、私は1.0を開始するa1をしたいと思いますが、私はその要素を印刷するとき、私はそれが代わりに3.0から始まることを得る:

[3.0, 5.0, 5.0, 7.0, 7.0, 7.0, 9.0, 9.0, 9.0, 9.0, 11.0, 11.0, 11.0...] 

私は何をやっていますここで間違っている?私は本当に混乱しています。最初に最初の要素として1.0があり、2のステップのおかげで3.0が続くと思いました。

これについての回答が見つかりませんでしたので、これまでに質問されている場合はお詫び申し上げます。助けを前にありがとう。

編集:何が起こっていたのかご意見ありがとうございました!皆さんはとても役に立ちました。 そして、私のフォーマットを修正するためのjojoに感謝します。

for j in range(1, 1, 2): 
    ... 

ので、何の反復を実行していないrange関数は空のリストを返すよう:i = 1インナーjループが形を持っている場合ので、だ

+1

内部ループでは、 'i = 1'の場合、空のリストである' for j in range(1,1,2) 'があります。この場合、内部forループにあるものは実行されません。 – jojo

答えて

0

>>> range(1, 1, 2) 
[] 

したがってないは、外側ループの最初の反復で行われる付加しません。

1

これは、iが1のときに内部Jループが発生しないためです。だからあなたがしたいことは、内側のループに入る前にiをa1に追加することです。

for i in range(1, 91, 2): 
     a1.append(float(i)) 
     for j in range(1, i, 2): 
      a2.append(float(j)) 

これは役に立ちます。

+0

これは、 'i'が外側ループの反復ごとに一度だけ追加されるので、' 5.0'は 'a1'に1回だけで、質問。 – jojo

関連する問題