You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何print函数会打印for循环迭代的最后一个数字?附代码示例

为什么print会打印for循环迭代的最后一个数字?

嘿,这个问题其实挺常见的,刚上手Python的朋友很容易疑惑这个点,我来给你掰扯清楚~

首先先纠正下你代码里的小细节:Python里获取列表长度的函数是len(),不是length(),不过这不影响核心问题的解释哈。

核心原因:Python中for循环变量的作用域

和一些其他编程语言不同,Python的for循环变量(比如你代码里的number)并不是循环内部的局部变量,它是定义在循环所在的外部作用域中的。也就是说,当循环结束后,这个变量并不会被销毁,而是会保留最后一次迭代时被赋予的值。

看你的代码:

array = [1,2,3,3,3,3,9,4,5]
for number in range(1, len(array)+1):
    pass
print(number)  # 输出9

这里range(1, len(array)+1)生成的序列是1,2,3,4,5,6,7,8,9(因为array的长度是9)。循环会依次把这些值赋值给number,每次循环执行pass(啥也不做),直到最后一次迭代时,number被赋值为9,循环结束。这时候number变量还在当前作用域里,所以print(number)就会输出这个最后保留的9。

直观验证一下

如果你把循环里的pass换成print(number),就能看到每次循环number的变化:

array = [1,2,3,3,3,3,9,4,5]
for number in range(1, len(array)+1):
    print(number)  # 依次输出1到9
print("循环结束后number的值:", number)  # 还是输出9

这样是不是就一目了然了?

小补充:如果想保存每次迭代的值怎么办?

要是你想把循环里的每个值都存下来,而不是只保留最后一个,可以用一个列表来收集:

array = [1,2,3,3,3,3,9,4,5]
numbers = []
for number in range(1, len(array)+1):
    numbers.append(number)
print(numbers)  # 输出[1,2,3,4,5,6,7,8,9]

内容的提问来源于stack exchange,提问作者Ritik sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:27:45