[[None] * 5] * 5 はやってはいけないです。 格納されている要素が全部同じリストを参照してしまうので、その中の一つを書き換えるとそれが全体に伝播します。 >>> a = [[None] * 2] * 3 >>> a [[None, None], [None, None], [None, None]] >>> a[0][0] = 0 >>> a [[0, None], [0, None], [0, None]] となってしまいます。 Pythonクックブックで奨められている書き方は a = [[None for col in range(2)] for row in range(3)] です。 >>> a = [[None for col in range(2)] for row in range(3)] >>> a [[None, None], [None, None], [

