python for循环创建列表

时间:2018-09-16 01:51:28

标签: python list for-loop

好的, 为什么这个简单的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背景!

3 个答案:

答案 0 :(得分:4)

打印时需要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 :(得分:3)

列表从零开始索引。您的循环循环了[1, 2, 3, 4, 5, 6]或六次。您的列表axx将以长度为6的列表结束,索引从零到5([0, 1, 2, 3, 4. 5])。但是您以i的身份访问它,它比当前索引大1。因此,您需要从中减去一个,以便在正确的位置获得该值。

所以不要使用range(1,7),而要使用range(6)

答案 2 :(得分:0)

不要忘记 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])

输出: 轴0 轴1 轴2 斧头3 斧头4 斧头5 斧6

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])

输出: 轴1 轴2 斧头3 斧头4 斧头5 斧头6 ax7

还要考虑下次在填充后打印整个列表,这样您就知道您的代码在做什么。这与您最初使用的代码相同,只是每次追加时都没有打印 i。

axx = []
for i in range(1,7):
    axx.append('ax'+str(i))

print(axx)

输出: ['ax1', 'ax2', 'ax3', 'ax4', 'ax5', 'ax6']