リストのリストをループすると(私の意見では)非常に奇妙な動作が発生しました。説明するのは非常に困難であるが、ここではサンプルコードです:ループ・トラフがリストのリストを認識できない、リストがコピーであるのはなぜですか
k = [[0],[1],[2]]
for lis in k:
lis_copy = lis
lis_copy.append(0)
print lis
これを実行して、私が手:
[0, 0]
[1, 0]
[2, 0]
追加されたリストがあるように、これは、私にとって非常に奇妙ですlisのコピーは ですが、lisも追加されています。私はこのリストに触れていないと思います。次の問題が発生した整数のリストと同じことをやったとえば :
k = [0,1,2]
for num in k:
num_copy = num
num_copy = 0
print num
出力:期待numをnum_copyの操作によって触れられていないのと同じように
0
1
2
。
誰かがなぜこれが起こっているのか、これを避ける方法を説明できるのであれば、 はlis_copyをどのように切断するかのように、それは素晴らしいことでしょう。
うわー、私はこれを知らずに市長の問題に遭遇していないことに驚いています。私は自分のコードを静かに見直すべきだと思う。
http://stackoverflow.com/questions/184710/what -is-the-difference-a-deep-copy-and-a-shallow-copy –
https://docs.python.org/3/library/copy.html –
私は、ここでPythonに関する重要な知識が欠落しています - これを参照して参照を呼び出し、名前を呼び出す方法の概要をご覧ください: http://www.python-course.eu/passing_argumentsphp – wilfo