Python多变量赋值场景下列表推导式的工作原理解析
一行输入多值并赋值的代码逻辑解析
咱们一步步拆解这段代码的运行逻辑,就能明白为啥临时变量和最终变量重名也不影响:
先处理输入分割:
input().split()会先读取你输入的一行字符串,然后按空格把它拆成字符串列表。比如你输入10 20 30,这一步会得到['10', '20', '30']。列表推导式的作用:
[int(a) for a in input().split()]里的a只是个临时循环变量,和左边要赋值的a根本不是同一个东西。它的作用就是遍历刚才分割出来的每个字符串,把每个字符串转成整数,最后生成一个整数列表[10, 20, 30]。哪怕你把这里的a换成x或者temp,代码功能完全不变。序列解包完成赋值:最后
a,b,c = ...是Python的序列解包特性——把右边列表里的三个元素,依次对应赋值给左边的三个变量。不管推导式里用了啥临时变量,只要右边列表的元素数量和左边变量数量一致,就能完成赋值。
举个替换临时变量的例子,你一看就懂:
a,b,c = [int(temp) for temp in input().split()]
这段代码和原代码效果完全一样,只是临时变量名字换了,就不会有混淆感了。
内容的提问来源于stack exchange,提问作者prynpo
相关产品推荐
相关产品推荐

