#あれ…これでいいんだっけ…?
pythonで配列書くとき、何かの場合でミスると配列そのものがコピーされちゃって面倒なことになることだけは覚えてるんですけど、それがどういう場合か覚えてないのでまとめます
#基本は内包表記さえすればいい
この通りで、1次元にしても2次元にしてもとりあえず内包表記にしておけばいい。
1次元の場合
こちらはそこまで心配する必要はなく、初期化の際には
list1=[0]*10
list2=[0 for i in range(10)]
のどちらでも構わない。
2次元の場合
これが注意するべきポイントで、
list1=[[0]*5]*3
とすると終わりである。なぜならここでは、全く同じものを指している[0]*5が3つ生まれただけなので、どれかを変更すると全て変更されてしまうからである。
したがって、2次元の場合、内包表記が優先されるべきであり、
list1=[[[0] for i in range(5)] for j in range(2)]
と書くべきっぽい。
###追記(2019/8/27)
コピーするときは
b=a.copy()
でokだそうです。ありがとうございます。