2016-11-07 26 views
0

我想構建一個for循環,其中我將使用循環的索引作爲列表中的元素。這裏是我的代碼:雙循環中的意外起始索引

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

理想情況下,我想a1入手1.0,但是當我打印的元素,我得到它從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作爲第一個元素,然後是3.0,這要歸功於步驟2,等等。

因爲我無法找到任何有關此問題的答案,所以我很抱歉如果之前已經詢問過此問題。預先感謝您的幫助。

編輯:感謝大家對於發生了什麼事的意見!你們都很有幫助。 並感謝jojo糾正我的格式。

+1

在你的內部循環中,如果'i = 1',你有'對於範圍(1,1,2)中的j'這是一個空列表。在這種情況下,不管內循環是什麼都不執行。 – jojo

回答

0

這是因爲當i = 1j循環有以下形式:

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

也因此運行沒有迭代作爲range函數返回一個空列表。

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

因此沒有追加在外部循環的第一次迭代進行。

1

發生這種情況是因爲當我是1時,內部j循環從不發生。所以你想要做的是在我進入內部j循環之前將我追加到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'中出現一次,而不會出現在這個問題。 – jojo