嗨我有一个关于if循环的if语句的问题。我知道您将较小的值与较大的值进行交换,但我不明白为什么将其写为waarde, rij[j] = rij[j], waarde
。逗号是Python中的某种交换器吗?
def insertionsort(rij):
for i in range(len(rij)):
waarde = rij[i]
for j in range(0, i):
if waarde<rij[j]:
waarde, rij[j] = rij[j], waarde
rij[i] = waarde
答案 0 :(得分:1)
在Python中,
a, b = b, a
有效地交换值a
和b
。更准确地说,名称a
现在将引用先前由b
引用的值,反之亦然。
这称为元组打包/解包。逗号构建元组;交换由=
完成。
在幕后发生了什么&#34;&#34;是这样的:
b, a
。您可以将此评估的结果想象为存储在未命名的临时变量中。我们称之为变量temp
。=
会将temp
分配给=
左侧的名称。如果左侧只有一个名称,如x = b, a
,那么x
将被分配为元组b, a
。temp
将被&#34;解包&#34;按顺序分成这些名字。a
将被赋予temp[0]
的值(其中包含b
指向的值),b
将被赋予temp[1]
的值}。请注意,双方的名称数量必须匹配:
>>> a = 1
>>> b = 2
>>> c = 3
>>> a, b = c, b, a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)
但是你可以使用元组打包运算符*
告诉Python将剩余的值打包成一个名字:
>>> a, *b = c, b, a
>>> a
3
>>> b
[2, 1]
答案 1 :(得分:0)
在Python中,你可以像这样分配多个变量:
a, b = "A", "B"
这就是说:将=
右侧的第一个值分配给=
左侧的第一个名称,并指定=
右侧的第二个值}到=
左侧的第二个名字。
您也可以使用三个或更多vars:
a, b, c, d = "A", "B", "C", "D"
您可以使用此功能交换变量值:
a, b = b, a
现在当你打印a
时,你会得到&#34; B&#34;当你打印b
时,你会得到&#34; A&#34;。