开箱? python中的奇怪逗号

时间:2013-07-23 18:24:37

标签: python comma iterable-unpacking

我正在查看一些返回列表中第二大元素的代码,并且遇到了一些奇怪的逗号。希望有人可以向我解释一下:

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语句中分配了什么?

2 个答案:

答案 0 :(得分:3)

基本上,元组(m1,m2)正在接收元组(x,m1)中的值。在声明m1之后,xm2的旧值将具有m1的旧值。例如:

>>> x = 2
>>> y = 3
>>> z = 4
>>> x,y = y,z
>>> x
3
>>> y
4

在进行任何分配之前创建元组(x,m1)。因此,此语法通常用于交换两个变量。例如,x,y = y,x将交换xy中的值。

答案 1 :(得分:2)

此代码:m1, m2 = x, m1表示将x的值存储到m1,将值m1存储到m2