現在、バージョン3.2でPythonを学習しています。
2つのリスト変数がある場合、変数が同じリストを参照しているのか、同じ値を持つ2つの別々のリストを参照しているのかをどのように区別しますか。
例えば:
>>> foo = [1,2,3,4]
>>> bar = foo
>>> foo.append(5)
>>> foo
[1, 2, 3, 4, 5]
>>> bar
[1, 2, 3, 4, 5]
>>> foo == bar
True
上記では、「foo」と「bar」は明らかに同じリストを参照しています。(fooに「5」を追加し、その変更がバーにも反映されていることからもわかります)。
次に、同じ値を持つ「other」と呼ばれる3番目のリストを定義しましょう。
>>> other = [1,2,3,4,5]
>>> other == foo
True
ここでの比較演算子もTrueを返すことを考えると、これらは間違いなく同じリストのように見えます。しかし、「その他」を変更すると、どちらかの変数の変更が他方に影響を与えない別のリストであることがわかります。
>>> other.append(6)
>>> other == foo
False
>>> other
[1, 2, 3, 4, 5, 6]
>>> foo
[1, 2, 3, 4, 5]
2つの変数が互いにエイリアスであるのか、構造が同一であるのかを知ることは有用だと思います。しかし、私は言語の基本的な何かを誤解しているのではないかと思います。