list.remove()的奇怪行为

时间:2016-08-22 05:07:10

标签: 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)

代码不起作用。它返回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

为什么第一个片段在第二个片段有效时会失败?

1 个答案:

答案 0 :(得分:5)

.remove(...)不会返回任何值。根据官方documentation

  

您可能已经注意到,只修改列表的insertremovesort等方法没有打印返回值 - 它们会返回默认值None。这是Python中所有可变数据结构的设计原则。