【发布时间】:2016-11-03 15:45:10
【问题描述】:
在观看 video 解释测验时,我发现了这个代码 sn-p:
a, x = x, a
a, x = x, a
print a
print x
视频说最终结果是x 和a 交换,如果我们再次这样做,它将在不改变任何变量值的原始位置。
我的问题是,如果我第一次分配a => x 和x => a,那么即使我们执行完全相同的代码,代码的值也不会改变为我之前所做的相同变量分配相同的值。但是为什么视频中解释了a和x的值会被交换两次,并且在执行语句之前会得到相同的值呢?
【问题讨论】:
-
对于第一个问题,一旦你执行
x = a,如果x没有分配到其他地方,你就失去了它的价值,所以他们不能交换。您将需要第三个变量(通常称为temp之类的东西)来保存x的值以进行交换;除非我错过了某种边缘技术来实现这一点。 -
a = x, x = a是一个错误。你的意思是a,x = x,a? -
@Carcigenicate 您可以轻松地使用 a,x = x,a 来不需要临时变量。
-
@JohnGordon 对不起。我的意思是a,x = x,a。我会编辑它。
-
@Whud 必须隐含地创建第三个变量,不是吗?我以前从未在 Python 中这样做过,但同样,一旦您覆盖
a,该值就消失了。如果 Python 在后台制作副本,那么我想这会起作用。
标签: python