簡體   English   中英

python for循環創建一個列表

[英]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開始追加, i1開始。 所以,首先append ,有元素在0i值為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM