2011-09-16 15 views
0

を追加これは私がちょうどPythonシェルにやったことです:Pythonシェルでこれを試してみてください。list.extend/

>>>[1, 2] 
...[1, 2] 
>>>[1, 2].extend([2,3]) #when I pressed Enter 
>>> 

       #nothing came out 

、私は何か他のものを試してみました:

>>>l = [1, 2] 
>>>l 
...[1, 2] 
>>>m = [1, 2].extend([2, 3]) 
>>>m      #pressed Enter, nothing came out 
>>>m is None 
...True 

なぜですか? 私は何かをすることはできませんか?

>>>m = [...].extend(...) 

+1

list.extendは、リストを**変更します**。 – jsz

+0

そして、変更可能なオブジェクトが**変更されたとき、その関数からの戻り値はNoneです。新しいオブジェクトではありません。 –

答えて

5

できません。extend(追加、ポップ...)は、何も返さずにオブジェクトのインプレースを変更します。

リストオブジェクトは変更可能なオブジェクトです。リストオブジェクトは、再作成する必要なく変更できます。あなたのケースでは

、あなたはlの種類を変更する場合は、

>>>l = [1,2] 
>>>l.extend([2,3]) 
>>>l 
[1,2,2,3] 

を行い、これは別のオブジェクトであると仮定しなければならない、のはclass Fooそれを呼びましょう、あなたは

のようなものの戻り値として何を期待します
foo = Foo() 
foo.modify_object("here are modifications") 

fooオブジェクトが変更されたようなものはありませんか?そのメソッドから何も返されませんか?

+0

しかし、私は "m = [1,2] .extend([1])"と答えています。 – Alcott

+0

これは 'extend'が返すものです。 –

+0

@Alcott:リスト以外のもので例を追加する –

2

いつでもm = [...] + [...]を実行できます。

0
>>> l = [1, 2] 
>>> l.extend([2, 3]) 
>>> l 
[1, 2, 2, 3] 
>>> 

ほぼすべてのリスト操作例えば、場所にリストを変更

>>> m = [1, 2, 5, 6, 7, 1, 2, 4] 
>>> m.sort() 
>>> m 
[1, 1, 2, 2, 4, 5, 6, 7] 
関連する問題