0

リストの 2 番目に大きい要素を返すコードを調べていて、コンマの奇妙な使い方に出会いました。うまくいけば、誰かが私にそれを説明できます:

それは

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)は、割り当てが行われる前に作成されます。その結果、この構文は 2 つの変数を交換するためによく使用されます。たとえば、とx,y = y,xの値を交換します。xy

于 2013-07-23T18:26:16.883 に答える
2

このコード: to の値とtom1, m2 = x, m1の値を格納することを意味します。xm1m1m2

于 2013-07-23T18:26:21.860 に答える