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

Python 为什么我的循环从4开始输出?,python,Python,我知道使用它可能毫无意义,但我感兴趣的是它为什么会以这种方式工作。 为什么从4开始?为什么不包括10个?为什么我们超出了范围 n=[2, 3, 4, 7, 9, 10] for a in n: print (n[a]) 输出 4. 7. 9 回溯(最近一次呼叫最后一次): 文件“D:\PyPro\new1.py”,第3行,在 打印(不适用) 索引器:列表索引超出范围 您正在使用该值作为索引。 因此,不要通过范围0,1,2,3,4,5。。。 您正在通过索引编号:2、3、4、7,这超出了

我知道使用它可能毫无意义,但我感兴趣的是它为什么会以这种方式工作。 为什么从4开始?为什么不包括10个?为什么我们超出了范围

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

输出
4.
7.
9
回溯(最近一次呼叫最后一次):
文件“D:\PyPro\new1.py”,第3行,在
打印(不适用)
索引器:列表索引超出范围

您正在使用该值作为索引。 因此,不要通过范围0,1,2,3,4,5。。。 您正在通过索引编号:2、3、4、7,这超出了范围。 应该是:

for a in n:
    print(a)
所以当你这么做的时候

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,因此当您将某个元素放在列表的方括号内时,它表示元素在列表中的位置

在您的示例中:

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)

因此,n[2]等于4

同样地 应打印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])*

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

提示:请尝试在n:print(a)中使用查找代码您是否手动或使用调试器跟踪代码?你知道for循环是如何工作的吗?你知道数组索引是如何工作的吗?我知道循环和列表是如何工作的。我的目的不是打印列表的所有元素。我想知道为什么它会这样工作。我知道如何打印列表中的所有元素。我想知道为什么我的代码是这样工作的。奇怪的和useles方法可以反转列表(从大到低排序,并且没有间隙=аааа)n=[5,4,3,2,1,0]表示n:print中的a(n[a])
4   ##print (n[2])*
7   ##print (n[3])*
9   ##print (n[4])*