前提・実現したいこと
listをdequeから作った時、勝手に上書きされる謎現象を解決したい。
解決したいこと1つ目 → dequeだけを上書きしてlistは上書きされないようにしたい
解決したいこと2つ目 → なぜdequeしか上書きしてないのにlistも上書きされるのかその原理を知りたい
該当のソースコード
python
1from collections import deque 2 3Deque = deque([{"key": 0}], maxlen=10) 4 5List = list(Deque) 6 7print(f"List={List}") 8 9Deque[-1]["key"] = 20 10 11print(f"List={List}")
発生している問題・エラーメッセージ
以下が実行結果になります
List=[{'key': 0}] List=[{'key': 20}]
デックを上書きしたのに(リストは上書きしてないのに)
リストが勝手に上書きされてる謎現象に困っています。
プログラムの実行順は順次処理なので今回のようにリストが勝手に上書きされるのは間違いだと思うのですが、、、、。
試したこと
何かのバグかと思い
pythonやanacondaのバージョンを最新版にして実行してみても同じ現象が起きました。
この勝手に上書きされてる現象に頭を悩ませているので何とか解決したいです。
どなたかご教授お願いいたします。
本来なら下記の結果になって欲しいのです
List=[{'key': 0}] List=[{'key': 0}]
↓もっと分かりやすい例で例えると、下記のような挙動になって欲しいのです
a = 1 b = a print(f"b={b}") a = 2 print(f"b={b}")
結果
b=1 b=1