前提・実現したいこと
ループ中に1ループ前の値を保持するようなコードを書きたいと思っています。
前の値: [0] 今の値: [1]
前の値: [1] 今の値: [2]
前の値: [2] 今の値: [3]
前の値: [3] 今の値: [4]
前の値: [4] 今の値: [5]
前の値: [5] 今の値: [6]
前の値: [6] 今の値: [7]
前の値: [7] 今の値: [8]
前の値: [8] 今の値: [9]
前の値: [9] 今の値: [10]
こんな出力をするのが目標です。
発生している問題・エラーメッセージ
下記のコードだと下の様な結果になってしまい上手くいきません。
前の値: [0] 今の値: [1]
前の値: [2] 今の値: [2]
前の値: [3] 今の値: [3]
前の値: [4] 今の値: [4]
前の値: [5] 今の値: [5]
前の値: [6] 今の値: [6]
前の値: [7] 今の値: [7]
前の値: [8] 今の値: [8]
前の値: [9] 今の値: [9]
前の値: [10] 今の値: [10]
実際のプログラム上では多次元配列を取り扱います。
なぜこの様な結果になってしまうのでしょうか?
2ループ目以降は
self.temporary[0] += 1
と代入した時点でnowの値がtemporaryになっていたり
3ループ目以降は
self.temporary[0] += 1
と代入した時点でbeforeの値がtemporaryになっていたり
する様なのですがイマイチ理解できません。
該当のソースコード
python
1import numpy as np 2class myGame(): 3 4 5 def __init__(self): 6 7 self.temporary = np.array([0]) 8 self.before = np.array([0]) 9 self.now = np.array([0]) 10 11 def step(self): 12 13 self.temporary[0] += 1 14 self.before = self.now 15 self.now = self.temporary 16 print("前の値:", self.before, "今の値:", self.now) 17 18 #これは正しく動く 19 """ 20 self.temporary[0] += 1 21 22 self.before[0] = self.now[0] 23 self.now[0] = self.temporary[0] 24 print("前の値:", self.before, "今の値:", self.now) 25 """ 26 27env = myGame() 28for count in range(10): 29 env.step()
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/25 00:12