-2

これは私が長い間書いた最も短い例の1つです

tuple3を作成して更新します

In [65]: arf=(0,1,[1,2,3])

In [66]: arf=(arf[0],arf[1], arf[2] )

In [67]: arf
Out[67]: (0, 1, [1, 2, 3])

したがって、再割り当ては機能しました。

今、内容を変えてみます。

In [69]: arf=(arf[0],arf[1], [2] )

In [70]: arf
Out[70]: (0, 1, [2])

In [71]: arf=(arf[0],arf[1], arf[2].append(3) )

In [72]: arf
Out[72]: (0, 1, None)

私は戻ってこない??? ねえ、何が与えますか?申し訳ありませんが、私はpythonnoobです。

4

4 に答える 4

5

list.append()常に戻りますNone

arf[2].append(3)追加3arfて戻りますNone

新しく作成されたタプルにarf[2]すぐに再バインドするため、この変更を確認することはできません。arf

おそらくこれはあなたが望むものです

arf = (arf[0], arf[1], arf[2]+[3])
于 2012-03-08T12:51:55.820 に答える
3

このlist.appendメソッドは、リストをその場で変更し、を返しますNone。これはバグではありません。これがメソッドのappend動作方法です。

于 2012-03-08T12:52:46.370 に答える
1

append[新しいリストを返さず、古いリストをインプレースで変更します。

>>> a = [1, 2, 3]
>>> b = a.append(4)
>>> print b
None
>>> print a
[1, 2, 3, 4]
于 2012-03-08T12:53:12.667 に答える
0

gnibblerの答えを詳しく説明するために、list.append()はリスト自体を変更しますが、リストの新しい値を返しません。を返しますNone。したがって、コマンド71はarf [2]の値を希望どおりに変更しますが、すぐに戻りNone、arf[2]をそれに設定します。

例の自己参照は物事を少しわかりにくくしますが、のようなコマンドを試してみると、someothervariable=arf[2].append(3)それがどのように機能するかがわかります。someothervariableに設定されNone、arf[2]に明示的な代入ステートメントなしで3が追加されています。

于 2012-03-08T12:58:16.993 に答える