2016-08-22 24 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 

2番目のスニペットがうまく機能しないのはなぜですか?

答えて

5

.remove(...)は値を返しません。彼らはデフォルトNoneを返す - 公式documentation

によると、あなただけのリストを変更insertremoveまたはsortのようなメソッドは戻り値が印刷されていない持っていることに気づいたかもしれません。これは、Pythonのすべての変更可能なデータ構造の設計原則です。