2017-09-08 8 views
0

私はこの試みた:[:]リストをリスト[:]に埋め込むことができないのはなぜですか?remove()?

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

出力は

None 
です:私は2番目の行を削除し、直接行う場合は

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

を、出力が

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

です

これはなぜですか?なぜ、[:]に.remove()を埋め込むことができないのですか? ありがとう!

+7

ヒント: 'a2.remove( 'b')'を 'a2 = a2.remove( 'b')'に置き換えると、最初のコードで何が起こりますか? – Kevin

+0

'a [:]'が 'a 'と等しくないのは –

+0

です。' remove'メソッドは連鎖可能であると実装されていません。つまり、 'remove'はNoneを返します。したがって、削除の結果をa2に割り当てています。したがってa2はNoneです。 – 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[:])を選択し、リストを返さないと、要素を除去することにより、Noneの戻り値に変数a2を設定し、説明するとき

出力。

関連する問題