2017-09-08 26 views
0

我尝试这样做:为什么无法将列表[:]嵌入列表[:]。remove()?

a = ['a', 'b', 'c', 'd'] 
a2 = a[:] 
a2.remove ('b') 
print(a2) 

,输出是

['a', 'c', 'd'] 

但是,如果我删除第二行,并直接做:

a = ['a', 'b', 'c', 'd'] 
a2 = a[:].remove ('b') 
print(a2) 

输出是

None 

这是为什么?为什么我不能用.remove()嵌入[:]? 谢谢!

+7

提示:如果用'a2 = a2.remove('b')'替换'a2.remove('b')',你的第一个代码会发生什么? – Kevin

+0

'a [:]'不等于'a' –

+0

'remove'方法没有实现为可链接的。换句话说,'remove'返回None。所以你将删除的结果分配给a2。因此a2是无。 – RobertB

回答

6

a[:].remove ('b')a[:]删除b并返回None,它不与b删除返回列表,这就是为什么它有一个独立的行被调用。

1

为了更好地理解这一点,你应该看看下面的例子:

a = ['a', 'b', 'c', 'd'] 
a2 = a.remove('b') 
print(a2) 

从文档remove()

从值为x列表中删除第一个项目。如果 没有这样的项目,那是错误的。

因此,当删除的元素,因为remove()不返回的列表中,选择所有的元素(a[:]),以及通过去除一个元件设置变量a2到的None一个返回值,解释输出。

相关问题