0

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

它是

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

4

2 回答 2

3

本质上,元组(m1,m2)正在接收 tuple 中的值(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将交换 和 中的xy

于 2013-07-23T18:26:16.883 回答
2

此代码:m1, m2 = x, m1表示存储 to 的值和toxm1值。m1m2

于 2013-07-23T18:26:21.860 回答