[英]python for loop create a list
好的,為什么這個簡單的 for 循環無法填充列表? 這是我所擁有的:
axx = []
for i in range(1,7):
axx.append('ax'+str(i))
print(axx[i])
我收到一個錯誤:
Traceback (most recent call last):
File "./bin_data2.py", line 57, in <module>
print(axx[i])
IndexError: list index out of range
這應該非常簡單明了,不是嗎? 抱歉,來自 Fortran 背景!
打印時需要i-1
。 數組從0
開始追加, i
從1
開始。 所以,首先append
,有元素在0
但i
值為1
:
print(axx[i-1])
如果您查看以下結果:
print(list(range(1,7)))
輸出:
[1, 2, 3, 4, 5, 6]
或者,您可以將范圍更改為range(6)
而不是range(1,7)
。 但是,它將以0
值打印。 在這種情況下,您需要axx.append('ax'+str(i+1))
列表從零開始索引。 您的循環會循環[1, 2, 3, 4, 5, 6]
或六次。 您的列表axx
將最終得到一個長度為 6、索引從 0 到 5( [0, 1, 2, 3, 4. 5]
)的列表。 但是您以i
身份訪問它,它比當前索引大 1。 因此,您需要從中減去一個以獲得正確位置的值。
所以不要使用range(1,7)
,使用range(6)
。
不要忘記 python 使用從零開始的索引。 您的范圍 (1,7) 是從 1 到 6,但您的列表在第一個循環后的位置 0 處有一個項目,因此您的打印語句始終落后於 i 。 將 range 函數更改為 range(7),或將打印函數更改為 print(i)。
axx = []
for i in range(7):
axx.append('ax'+str(i))
print(axx[i])
輸出:ax0 ax1 ax2 ax3 ax4 ax5 ax6
或者
axx = []
for i in range(1,7):
axx.append('ax'+str(i))
print(i)
輸出:1 2 3 4 5 6
如果您不希望列表包含 ax0,請嘗試:
axx = []
for i in range(7):
axx.append('ax'+str(i+1))
print(axx[i])
輸出:ax1 ax2 ax3 ax4 ax5 ax6 ax7
還要考慮下一次在填充后打印整個列表,這樣你就知道你的代碼在做什么。 這與您最初擁有的代碼相同,只是每次追加時都沒有打印 i。
axx = []
for i in range(1,7):
axx.append('ax'+str(i))
print(axx)
輸出:['ax1'、'ax2'、'ax3'、'ax4'、'ax5'、'ax6']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.