考虑下面这段代码。
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
为什么第一个片段在第二个片段有效时会失败?
答案 0 :(得分:5)
.remove(...)
不会返回任何值。根据官方documentation
您可能已经注意到,只修改列表的
insert
,remove
或sort
等方法没有打印返回值 - 它们会返回默认值None
。这是Python中所有可变数据结构的设计原则。