Pythonでは、すべてがポインタで表されるべきです。リストのコピーに対する操作で元のリストの要素も変更されなかったのはなぜですか?
import copy
a = ["a", "a"]
copy = copy.copy(a)
for (count, e) in enumerate(copy):
copy[count] += "b"
print copy
print a
私は["ab", "ab"]
が見込ま:私はリストcopy
がa
に含まれるすべての元のポインタが含まれているだろうと思ったので、したがって、私は、同様に元のリストa
を変更するには、次のコードを期待しました。驚くべきことに、a
はまだ["a", "a"]
しか含んでいないが、copy
は実際に["ab", "ab"]
を含んでいる。 copy = list(a)
を使用しても動作しません。
この結果は、copy = copy.deepcopy(a)
と書いた場合にのみ発生すると考えました。
どこが間違っていましたか?リスト内のすべての要素への参照を取得し、ミラーリストで変更する適切な方法は何ですか?それともPythonでは不可能なのでしょうか?
文字列は不変ですか? – Zizouz212
文字列は不変です。 – chepner
@chepner 3秒遅れます:P – Zizouz212