为什么我的循环从4开始输出?

时间:2018-03-02 08:01:32

标签: python

我知道使用它可能没有任何意义,但我对它为何如此工作感兴趣。 为什么从4开始呢?为什么它不包括10?为什么我们超出范围?

n=[2, 3, 4, 7, 9, 10]
for a in n:
    print (n[a])
Output

4
7
9
Traceback (most recent call last):
  File "D:\PyPro\new1.py", line 3, in <module>
    print (n[a])
IndexError: list index out of range

3 个答案:

答案 0 :(得分:1)

所以当你这样做时

for a in n:

a变量将是列表中的元素,按顺序为2,3,4,7,9,10

因此,如果您想从列表中打印,那么

for a in n:
    print(a)

或者你可以做到

for a in range(len(a)):
    print(n[a])

在这种情况下,a将为0,1,2,3,4,5

答案 1 :(得分:1)

因此,当您在列表的方括号内放置内容时,它会引用列表中元素的位置。

在你的例子中:

n=[2, 3, 4, 7, 9, 10]
for a in n:  ## Here 'a' refers to list element
    print (n[a])   ## Here 'a' refers to position of element

迭代1:

a是列表n的第一个元素,因此a = 2

但是当你打印时你写a作为一个位置,因为a = 2,因此它指的是位置3(在python索引中从0开始,因此0,1,2)

因此打印等于4的n [2]

类似地 应打印n [3],n [4],n [7],n [9]和n [10]。

但是因为n中的索引最多为5,所以在n [7]

时会出现错误

所以输出是:

4   ##print (n[2])*
7   ##print (n[3])*
9   ##print (n[4])*

*仅用于解释,而不是实际输出

答案 2 :(得分:0)

您正在使用该值作为索引。 所以不要经过0,1,2,3,4,5的范围...... 你正在通过索引编号:2,3,4,7超出范围。 它应该是:

for a in n:
    print(a)