我正在查看一些返回列表中第二大元素的代码,并且遇到了一些奇怪的逗号。希望有人可以向我解释一下:
是
m1, m2 = x, m1
以下代码的一部分:
def second_largest(numbers):
m1, m2 = None, None
for x in numbers:
if x >= m1:
m1, m2 = x, m1
elif x > m2:
m2 = x
return m2
在if语句中分配了什么?
答案 0 :(得分:3)
基本上,元组(m1,m2)
正在接收元组(x,m1)
中的值。在声明m1
之后,x
和m2
的旧值将具有m1
的旧值。例如:
>>> x = 2
>>> y = 3
>>> z = 4
>>> x,y = y,z
>>> x
3
>>> y
4
在进行任何分配之前创建元组(x,m1)
。因此,此语法通常用于交换两个变量。例如,x,y = y,x
将交换x
和y
中的值。
答案 1 :(得分:2)
此代码:m1, m2 = x, m1
表示将x
的值存储到m1
,将值m1
存储到m2
。