2013-07-23 90 views
0

我在看一些返回列表中第二大元素的代碼,並且遇到了奇怪的逗號使用。希望有人能向我解釋:開箱?奇怪的逗號在python中

它下面的代碼的

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語句是什麼得到什麼分配在這?

+1

一致地將'x'分配給'm1'和'm1'到'm2'。 – voithos

+0

這是一個糟糕的編碼,爲什麼它並不完全清楚你在這裏第一眼看到的情況。雖然它是一種線條保護程序,但它不太明顯,你想要做什麼,並使你的代碼難以閱讀。 – scohe001

+0

我想說是什麼讓它難以閱讀是變量名稱'm1'和'm2'。多任務是標準的Python。 – user2357112

回答

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中的值。

2

此代碼:m1, m2 = x, m1手段存儲的xm1m1m2值和值。