list.remove()的奇怪行为

The*_*tan 2 python-2.7

考虑以下代码.

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

代码不起作用.它返回一个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
Run Code Online (Sandbox Code Playgroud)

为什么第一个片段在第二个片段工作时会失败?

vsm*_*kov 5

.remove(...)不会返回任何价值.根据官方文件

您可能已经注意到,方法一样insert,remove或者sort只修改列表没有返回值印刷-它们返回的默认None.这是Python中所有可变数据结构的设计原则.