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

Python循环解包元组后a+b+c输出21的原因咨询

代码输出21的执行逻辑

你运行的代码如下:

my_list= [(0,1,2),(3,4,5),(6,7,8)]
for a,b,c in my_list:
    print(a)
    print(b)
    print(c)
my_list = a+b+c
print(my_list) 

逐行执行的逻辑如下:

  • 第一行给变量my_list初始赋值为包含3个三元组的列表,元素依次是(0,1,2)、(3,4,5)、(6,7,8)
  • 接下来进入for循环,这里用了元组解包语法:每遍历到列表中的一个三元组,就会把元组内的三个元素按顺序赋值给a、b、c三个变量,之后执行三次打印操作:
    • 第一次遍历到(0,1,2):a=0、b=1、c=2,依次打印0、1、2
    • 第二次遍历到(3,4,5):a=3、b=4、c=5,依次打印3、4、5
    • 第三次遍历到(6,7,8):a=6、b=7、c=8,依次打印6、7、8
  • Python中for循环内赋值的变量不会在循环结束后销毁,循环跑完时,a、b、c保留的是最后一轮循环的赋值:a=6、b=7、c=8
  • 执行my_list = a+b+c时,原本存储元组列表的my_list变量被新值覆盖:这里三个变量都是整数类型,+执行算术加法运算,计算结果为6+7+8=21
  • 最后执行print(my_list)时,打印的就是这个求和结果21

如果你原本的需求是把嵌套元组里的所有元素展开拼成一个扁平列表,当前写法无法达成——循环过程中没有留存前两轮遍历到的元素,循环结束后只能拿到最后一个元组解包出的三个值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 13:01:41