前提・実現したいこと
初心者です
デバッグができずに困っています
発生している問題・エラーメッセージ
リスト(A)に別のリスト(B)をスライスしいれその後Bを変更したところAまで変更されてしまいます. (コードでいうとescape関数の中のresultsが変更を受けています)
該当のソースコード
python3
1import i2a 2import random 3 4def moveleft(i,j,data):#i,jの人の移動 5 if data[i][j] == 1: 6 if j != 0: 7 if data[i][j-1] == 0:#人がいない 8 data[i][j] = 0 9 data[i][j-1] = 1 10 data[0][0] ==0 11 return data 12 13def moveup(i,j,data):#i,jの人の移動 14 if data[i][j] == 1: 15 if i != 0: 16 if data[i-1][j] == 0:#人がいない 17 data[i][j] = 0 18 data[i-1][j] = 1 19 data[0][0] ==0 20 return data 21 22def escape_step(data):#1回での脱出 23 n = len(data) 24 m = len(data[0]) 25 next = i2a.array.make2d(n,m) #次世代 26 for k in range(0,len(data)): 27 for l in range(0,len(data[0])): 28 next = moveleft(k,l,data) 29 for k in range(0,len(data)): 30 for l in range(0,len(data[0])): 31 next = moveup(k,l,next) 32 return next 33 34def escape(data, n): 35 results = i2a.array.make1d(n) 36 for i in range(n): 37 results[i] = data[:] 38 data = escape_step(data) 39 return results 40 41random.seed(0) 42n,m=3,4 43data = 0 44data = [[random.randint(0,1) for j in range(m)] 45 for i in range(n)] 46imag = escape(data,5) 47print(imag)
試したこと
実際にresultsとdataのIDはことなることは確認済みです
またescape_stepの前後でprintで確認し数値が変わっていました
補足情報(FW/ツールのバージョンなど)
jupyter notebookをもちいています
python3.6です
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。