假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换,没看懂
假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换x, y, z = z, y, x
这个有大佬给新手通俗的解释一下吗,脑袋不太够用。 拆开来看:
x = y
y = z
z = x
但这样是不对的,在最后,z = x的时候,x已经不是原来那个x了
而写在一起,却没有这个错误。 这就是个特性…… x, y, z = 1, 2, 3
x, y, z = z, y, x
其实就是
x, y, z = 3, 2, 1 这是 Python 独有的特性,相当于同时执行以下三条语句:
x = z
y = y
z = x 永恒的蓝色梦想 发表于 2020-4-29 16:59
这就是个特性……
意思是记住就行,不用理解么。。。 zltzlt 发表于 2020-4-29 17:23
这是 Python 独有的特性,相当于同时执行以下三条语句:
不太明白,x=1,y=2,z=3,相当于x=z,y=y, z=x,是吧,
那为什么不能,x=x,y=z,z=y呢。。。 xiaoqing7319 发表于 2020-4-29 17:35
不太明白,x=1,y=2,z=3,相当于x=z,y=y, z=x,是吧,
那为什么不能,x=x,y=z,z=y呢。。。
因为当 z = y 时 y 的值已经被改变了,此时 y 的值是原来的 z xiaoqing7319 发表于 2020-4-29 17:32
意思是记住就行,不用理解么。。。
当然需要理解 这种多重赋值的,可以用个临时的变量来解释。
你可以这么理解
x=1 ,y=2 , z=3
x,y,z = z,y,x相当于
x = temp1 = 1; y= temp2 = 2;z = temp3 = 3
temp1 = z; temp2 = y ;temp3 = x。
相当于把原变量重新赋值临时变量,临时变量又重新赋值最终变量,原理就是这样了。 用reverse()函数 zltzlt 发表于 2020-4-29 17:36
因为当 z = y 时 y 的值已经被改变了,此时 y 的值是原来的 z
那要这么理解的话,x , y , z = z , y , x,可以理解为,x = z,y = y,z = x,那当z = x的时候,x 的值也已经被改变了啊,此时x 的值就是原来的 z 呀,不是一个意思吗 xiaoqing7319 发表于 2020-4-29 18:16
那要这么理解的话,x , y , z = z , y , x,可以理解为,x = z,y = y,z = x,那当z = x的时候,x 的值 ...
是同时执行,不是依次执行 heidern0612 发表于 2020-4-29 17:55
这种多重赋值的,可以用个临时的变量来解释。
你可以这么理解
那我可以把temp1 = y,temp2 = z,temp3 = x,吗? xiaoqing7319 发表于 2020-4-29 18:20
那我可以把temp1 = y,temp2 = z,temp3 = x,吗?
可以啊。
那就x,y,z= y,z,x,原理一样的。 heidern0612 发表于 2020-4-29 18:26
可以啊。
那就x,y,z= y,z,x,原理一样的。
那就是问题的答案并不一定是x,y,z = z,y,x了,也可以是x,y,z = x,z,y,也可以是x,y,z = y,x,z,是不? 本帖最后由 heidern0612 于 2020-4-29 18:32 编辑
xiaoqing7319 发表于 2020-4-29 18:30
那就是问题的答案并不一定是x,y,z = z,y,x了,也可以是x,y,z = x,z,y,也可以是x,y,z = y,x,z,是不?
嗯,对,快速交换都可以这么写。
不过你后面这种交换位置有重复的,其实可以去掉。
知道这是一种快速赋值的方法就好。 qiuyouzhi 发表于 2020-4-29 16:58
拆开来看:
但这样是不对的,在最后,z = x的时候,x已经不是原来那个x了
大佬我明白了, 要想交换这三个值其实可以随意写,比如 x,y,z = z,x,y ; x,y,z = y,z,x ,但是不能拆分开来写,我自己在IDLE上写了几次,终于明白了 xiaoqing7319 发表于 2020-4-29 18:42
大佬我明白了, 要想交换这三个值其实可以随意写,比如 x,y,z = z,x,y ; x,y,z = y,z,x ,但是不能拆分开 ...
那就设个最佳答案吧~ 我觉得最佳答案是 x,y,z=y,z,x
相当于x=y
y=z
z=x三个赋值同时进行
页:
[1]