3
>>> a = [1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]

だが:

>>> [1, 2, 3].append(4)
>>>

listPythonのメソッド(やなどinsertappendが定義された変数でのみ機能するのはなぜですか?

4

6 に答える 6

9

append2番目のサンプルでは、​​リストで呼び出された(appendが実際に実行されたことに注意してください)がを返すため、何も出力されませんNone

a.append(4)または、(最初​​のサンプルが示すように)空白行が表示され、最初のコードサンプルの最終出力は、a式ではなく式の結果の表現であることに言及する必要がありa.append('4')ます。

appendの表現であるため、どちらの場合も呼び出し後に何も出力されませんNone

于 2012-08-31T14:16:52.790 に答える
4

list.appendを返しますNonea.append('4')戻るものNoneはインタラクティブインタプリタで何も印刷しないので、何も印刷しませんでした...

2番目のメソッド呼び出しが機能したことに注意してください。それはリストに追加さ'4'れました。作成したリストにあったハンドルがすぐに失われるため、表示されることはありません。

于 2012-08-31T14:17:10.617 に答える
4

それは機能します。何も印刷しないのと同じように、何もa.append(4)印刷しません。新しい値を表示できるのは、リストを変数として保存したからです。

于 2012-08-31T14:20:58.187 に答える
1

リストメソッドが定義された変数でのみ機能するわけではありません。問題のリストの内部状態を変更している間、リストの指定されたメソッドappendは常にNoneを返します。

于 2012-08-31T14:21:12.070 に答える
0

リストを連結する別の方法:

>>> [1, 2, 3] + [4]
[1, 2, 3, 4]

この場合、新しいリストが作成されて返されることに注意してください。list.append既存のリストにアイテムを追加し、何も返しません。

于 2012-08-31T14:20:08.913 に答える
0

関数は、定義された変数でのみ機能します。これは、関数が機能するようにインデントされる方法であるためです。Pythonドキュメントから:

list.append(x)

リストの最後にアイテムを追加します。と同等a[len(a):] = [x]です。

これは、値が返され、関数が例外を発生させないという意味で「機能」することに注意してください。ただし、変更されたリストへの参照がないため、結果は失われます。


余談ですが、一部の言語では、関数が特定のオブジェクトを変更することを明示するために命名規則が適用されます。たとえば、RubyとSchemeは!-を追加するため、この場合、関数はと呼ばれる可能性がありますappend!。このような命名規則は、関数の意図をより明確にするのに役立ちます。

于 2012-08-31T14:23:28.740 に答える