質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

245閲覧

python のIDの異なるリストのバグについて

eup

総合スコア29

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/10/31 05:00

前提・実現したいこと

初心者です
デバッグができずに困っています

発生している問題・エラーメッセージ

リスト(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です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

deepcopyを使ってできました

投稿2018/10/31 14:48

eup

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問