2012-03-14 14 views
0

私はkに、この割り当て値は、上記の例の一覧でPythonのリストの概念

> >>> l=[2,3,4] 
> >>> k=l.append(14) 
> >>> print k 
None 
> >>> print l 
[2, 3, 4, 14] 

「なし」値を与えている理由 をプログラミングするのpythonに新しいです、私はリストする14値を追加して、kに割り当てられたが、 kは印刷されていません。なぜ印刷されたのか理由を教えてください。

おかげ mukthyar

+1

が、何も返しませんか?あなたはその文書を読んだことがありますか? –

+0

rel:http://stackoverflow.com/questions/1452995/why-doesnt-a-python-dict-update-return-the-object – georg

答えて

7

appendは、現在のリストを変更し、何も返しません。用途:自分のインスタンスを変異Pythonで

k = l + [14] 

または

k = l[:]  # Copy list 
k.append(14) 
4

ほとんどのメソッドオブジェクトのコピーを返しません(.append()、.sort()、ら。)。したがって、l.append(X)はl.sort()と同様に実際には "None"を返します。 list.append方法が変更リストを返さない -

あなたが期待されて見ている何
l.append(14) 
k = l[-1] 
1

は:

は、おそらくより多くのようなものを使用したいと思います。 Pythonチュートリアルのrelevant sectionを見てみると、有用な値を返すメソッドがそのまま記述されていることに気付くでしょう。

対話インタプリタでの作業

、あなたは式は出力の欠如によってなし得ないことを伝えることができます:

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

(理論上)list.appendがリストを返された場合は、代わりに次のように表示します:

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

このようにインタラクティブなインタープリタを使用すると、すべての値を印刷できなくなります。

1

pythonのデフォルトの戻り値の型はNoneです。関数が値を返さない場合は、その関数からNoneを取得します。オブジェクトにはさまざまな機能があります。いくつかの関数は同じオブジェクトに対して実行され、他の関数は変更されたコピーを返します。たとえばlist.sortは元のリストを変更しますが、sortedは元のリストを変更せずに新しいソート済みリストを返します。したがってappendはオブジェクト上で作業しているので、新しい変更されたコピーを返す代わりにオブジェクトの値を変更します。

希望すると、appendメソッドについてのご意見を明確にします。簡単な単語の追記機能で

1
Pythonのドキュメントから

list.append(x) 
    Add an item to the end of the list; equivalent to a[len(a):] = [x]. 

なしあなたは、それは追加のリストを印刷することを期待なぜ

suggested reading