Pythonでextendがどのように機能するのかを理解しようとしています。例えば:Pythonのリストを使ったExtendの予期しない動作
>>> a = [1, 2, 3]
>>> b = [4, 5, 6].extend(a)
>>> b
>>>
しかし、私は期待しているでしょう:
[4, 5, 6, 1, 2, 3]
はなぜNoneを返さない代わりのリストを拡張することですか?
Pythonでextendがどのように機能するのかを理解しようとしています。例えば:Pythonのリストを使ったExtendの予期しない動作
>>> a = [1, 2, 3]
>>> b = [4, 5, 6].extend(a)
>>> b
>>>
しかし、私は期待しているでしょう:
[4, 5, 6, 1, 2, 3]
はなぜNoneを返さない代わりのリストを拡張することですか?
extend()
方法は、既存のアレイに追加し、None
を返します。あなたの場合は、アレイ上に[4, 5, 6]
という配列を作成し、拡張してからそれを破棄します。変数b
は、戻り値None
で終了します。
ありがとう、それは完璧な意味があります。 – TimothyAWiseman
list
のメソッドは大部分がインプレースで動作し、None
を返します。
>>> a = [1, 2, 3]
>>> b = [4, 5, 6]
>>> b.extend(a)
>>> b
[4, 5, 6, 1, 2, 3]
extend
は、そのオペランドを拡張しますが、値を返しません。完了している場合:
b = [4, 5, 6]
b.extend(a)
次に、期待した結果が得られます。
他の人は、多くの場合list
メソッドを指摘しました。特に、リストを変更するメソッドは、リストへの参照ではなくNone
を返します。 理由これは、リストのコピーが作成されたかどうかを混乱させないようにするためです。 a = b.extend([4, 5, 6])
と書くことができる場合はa
b
と同じリストへの参照ですか?声明でb
を修正しましたか?このようなステートメントは、変更されたリストの代わりにNone
を返すことで無駄になります。a
には、あなたが思ったことがなく、代わりにb.extend(...)
と書くことを学びます。したがって、明瞭さの欠如が除去される。
私はこの問題を抱えていましたが、他の回答が正しい説明を提供していましたが、私が気に入った解決策や回避策はここにはありません。加算演算子を使用すると、リストを連結して結果を返すことになります。私の場合は、color
を3桁のリストに、opacity
を浮動小数点として簿記していましたが、ライブラリは色を不透明度が4桁の4桁のリストとして必要としました。私は使い捨ての変数に名前を付けたくなかったので、この構文は私のニーズに合った:
color = [1, 1, 0]
opacity = 0.75
plot.setColor(color + [opacity])
は、これは連結後その場で不透明度と、新しいリストのための新しいリストを作成し、それは私の目的のために罰金です。私はちょうど浮動小数点でリストを拡張し、元のリストや浮動小数点に影響を与えずに結果のリストを返すコンパクトな構文が欲しかった。
あなたは 'b = [4、5、6] + a'が何を期待しましたか? –