我是Udacity的计算机科学入门课程的新手。关于交换价值的问题我们有一个相当简单的问题,我不太明白。下面是问题:交换价值
以下哪个语句序列使变量X的值与语句之前的值相同?假设a和x都指代这个代码之前的整数值。
为什么这是真的?
a,x = x,a
a,x = x,a
例如,如果我有:
a,x = 4,5
然后 一个= 4且x = 5
对于第二部分:
a,x = 5, 4
则a = 5和x = 4 所以x不等于之前的情况。有人能解释为什么这是真的吗?
我是Udacity的计算机科学入门课程的新手。关于交换价值的问题我们有一个相当简单的问题,我不太明白。下面是问题:交换价值
以下哪个语句序列使变量X的值与语句之前的值相同?假设a和x都指代这个代码之前的整数值。
为什么这是真的?
a,x = x,a
a,x = x,a
例如,如果我有:
a,x = 4,5
然后 一个= 4且x = 5
对于第二部分:
a,x = 5, 4
则a = 5和x = 4 所以x不等于之前的情况。有人能解释为什么这是真的吗?
这只是交换,然后再次交换。
>>> a = 2
>>> x = 1
>>> a,x = x,a # We swapped them, so a = 1 and x = 2 now
# During evaluation, this statement will be equivalent to "a,x = 1,2"
>>> a,x = x,a # And now we swap them again, so they're back to their original values
# During evaluation, this statement will be equivalent to "a,x = 2,1"
>>> a
2
>>> x
1
看起来你缺少的是值的变化在中间。你不能在开始时使用x
和a
,在你的例子中用4和5代替所有的事件,因为x
和a
在操作过程中发生了变化。
谢谢!我现在知道了。 – johnnewbie
发生这种情况是因为Python的所谓拆包作业_工作。实质上,解释器从赋值语句的左侧创建一个目标列表,并从赋值语句的右侧创建一个值列表,然后将值赋给目标。
所以在
a, b = 4, 5
要分配4 a
和5 b
。然后
a, b = b, a
分配5(的b
的电流值),以a
和4(的a
的电流值),以b
。
重复上一条语句因此将值切换回原始变量。
另外,对于这两个语句,您应该使用'a,x = x,a',而不是用您选择的随机整数替换'x'和'a'。 – 3442
这些陈述都没有对他们有任何“真相”。他们都是任务。 – dashiell
因为它交换了两次。 –