2016-08-22 38 views
2

考慮下面的一段代碼。list.remove()的奇怪行爲

def foo(a): 
    b = [a+9*i+j for i in xrange(0,3) for j in xrange(0,3)] 
    return b.remove(a) 

該代碼不起作用。它返回一個null。但是,如果我做了以下,它的作品。

def foo1(a): 
    return [a+9*i+j for i in xrange(0,3) for j in xrange(0,3)] 

b = foo1(a) 
b = b.remove(a) # This works 

爲什麼第一個代碼段在第二個代碼段工作時失敗?

回答

5

.remove(...)不返回任何值。據官方documentation

您可能已經注意到,像insertremovesort方法,只需修改列表沒有返回值印刷 - 他們返回默認None。這是Python中所有可變數據結構的設計原則。