2017-07-20 13 views
0

の方法を拡張し、なぜこのはPythonのリスト

list(('a', 'b', 'c')).extend([1, 2, 3]) 

は 'なし' に評価しません。 私は、コンストラクタの結果をリストにする必要があるので、コンストラクタの結果を変数に代入してから拡張した場合と同じように、「拡張」するのに問題はないはずですほぼ常にNoneです。 これはなぜ起こるのですか?

+0

@vaultahを返しextendの呼び出し、後にそのリストをスイープアップあなたが特権を持っている場合、質問。 –

+0

タグを編集したので、できません。 「それは私の問題を解決しました」というボタンがあるはずです。クリックする必要があります – vaultah

+0

そのボタンはありません。 –

答えて

-1

L = list(('a', 'b', 'c'))は、リストを作成し、それを変数Lに割り当てます。同様に、list(('a', 'b', 'c'))は新しいリストを作成します。

L.extend([1,2,3])は、Lに対して操作を実行し、戻り値はNoneです。

あなたのケースでは、コンストラクタがextendという名前のリストを作成するということが起こります。 extendは戻り値がNoneであるため、list(('a', 'b', 'c')).extend([1, 2, 3])Noneと評価されます。リストは、あなたが構築しているので(つまりlist(('a', 'b', 'c'))は)それへの参照がない、変数に割り当てられていないし、Pythonの参照カウントガベージコレクタは、単に閉じてくださいNone

+4

なぜこの質問に答えることにしましたか?それは明らかに重複しています、そしてあなたはそれを偽装ハンマーで閉じることができます。 – vaultah

+0

@vaultah:私が答える前にdupターゲットを見なかった。役に立った – inspectorG4dget