だから私はPythonについて非常に初歩的な理解を持っています(PythonとMatlabの間で分割された10週間の夏のコース)。私は次のような2Dリストを作成しようとしています:
data.append (samples)
data.append (matches)
data_list.append (data)
data.clear()
これはforループで実行され、反復するたびに書き込みます。しかし、それを実行するとprint(data_list)
、空のリストが表示されます。
私はそれを次のようにうまく実行しました:
data.append (samples)
data.append (matches)
data_list.append (data)
data = []
しかし、2つの方法の違いと、2番目の方法だけが機能する理由がわかりません...
Pythonでは、すべてがオブジェクトであることを理解することが重要です。これらのうち、2つのタイプがあります。
不変オブジェクトは変更できません。つまり、不変を再定義することはできません。
1 = 0
それはばかげています!ただし、不変を名前にバインドすることはできます。このような名前を「変数」と呼びます。
x = 1
y = x
x = 0
# x = 0
# y = 1
変更可能なオブジェクトには、しかし、彼らの内部の内容を変更することがあります。
x = [0, 2]
y = x
x[0] = 1
# x = [1, 2]
# y = [1, 2]
これy
は単なるリストの名前であることに注意してください。でリストを変更するx
とx[0] = 1
、にy
バインドされているのと同じリストが変更されます。
なぜ私はあなたにこれをすべて話しているのですか?理由:
data.clear()
にdata
バインドされている元のリストを変更します。
対照的に、
data = ()
単に他のオブジェクトに再バインド data
します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加