Open1
Python(データサイエンス関連)
リストに変数を格納するときの挙動を確認
よく間違うのでメモ
メモリを参照しているとかしていないとか?の話のはず。
forループ外でインスタンスを定義
class ABC():
def __init__(self):
pass
def fit(self, i):
self.i = i
abc = ABC()
list_abc = []
for i in range(5):
abc.fit(i)
list_abc.append(abc)
for abc in list_abc:
print(abc.i)
結果
4
4
4
4
4
forループ内でインスタンスを定義
class ABC():
def __init__(self):
pass
def fit(self, i):
self.i = i
list_abc = []
for i in range(5):
abc = ABC()
abc.fit(i)
list_abc.append(abc)
for abc in list_abc:
print(abc.i)
結果
0
1
2
3
4
forループ内でインスタンスを定義し、コピーしてリストに格納
import copy
class ABC():
def __init__(self):
pass
def fit(self, i):
self.i = i
abc = ABC()
list_abc = []
for i in range(5):
abc.fit(i)
list_abc.append(copy.copy(abc))
for abc in list_abc:
print(abc.i)
結果
0
1
2
3
4