データを突っ込む初期値として [0, 0, 0]
とか [[], [], []]
みたいな配列を作りたい
* n
で要素を繰り返した配列が作れる
data = [0] * 3 # [0, 0, 0]
* n
する配列の要素全てが n 回繰り返される
data = [1, 2, 3] * 3 # [1, 2, 3, 1, 2, 3, 1, 2, 3]
要素に配列や辞書を持つリスト作成は注意が必要
* n
の繰り返しは同じ要素を繰り返しているので参照値である配列や辞書は同じ参照を持つものが繰り返されてしまうので注意が必要
配列
data = [[]] * 3 # [[], [], []] data[0].append(1) # [[1], [1], [1]]
辞書
data = [{}] * 3 # [{}, {}, {}] data[0]['foo'] = 'bar' # [{'foo': 'bar'}, {'foo': 'bar'}, {'foo': 'bar'}] data[0].update({'foo': '1', 'bar': 2}) # [{'foo': '1', 'bar': 2}, {'foo': '1', 'bar': 2}, {'foo': '1', 'bar': 2}]
参照のデータを要素にしたい場合は素直にリスト内表記で作成すればOK
配列
data = [[] for i in range(3)] # [[], [], []] data[0].append(100) # [[100], [], []]
辞書
data = [{} for i in range(3)] # [{}, {}, {}] data[0]['foo'] = 'bar' # [{'foo': 'bar'}, {}, {}] data[2].update({'foo': '1', 'bar': 2}) # [{'foo': 'bar'}, {}, {'foo': '1', 'bar': 2}]
おまけ: 辞書は * n
できない
{'a': 1} * 3 TypeError: unsupported operand type(s) for *: 'dict' and 'int'
所管
簡単に要素が n 個の配列・辞書を作ることが出来ました!
参照なデータを要素に取る時だけ作り方に注意が必要そうです。
思い出したかのように時々触るくらいなので覚えられない!
[参考]
ゲーム作るの楽しそう!ねんどろいど 邪神ちゃんドロップキック 邪神ちゃん ノンスケール ABS&PVC製 塗装済み可動フィギュア
- 発売日: 2019/05/17
- メディア: おもちゃ&ホビー