かべぎわブログ

技術的なことについてかけたらいいな…

Pythonの空の2次元配列の宣言の仕方

概要

Pythonでの空の2次元配列の宣言の仕方ではまった。

はまったこと

こんなかんじでアスタリスクをつかって宣言していた。

wawawa_array = [['']*3]*3



それに値を代入したところこんなかんじになってしまった。

>>> wawawa_array[0][0] = 'wa'

>>> print(wawawa_array)
[['wa', '', ''], ['wa', '', ''], ['wa', '', '']]



この宣言の仕方だとむかしにこの記事でも似たようなことを書いたけれどもおなじ配列を3つ宣言しているだけになってしまうんだとおもう。

↓むかし書いた記事 www.kabegiwablog.com



解決方法

こんなかんじで内包表記をつかってあげる。

sasasa_array = [['' for i in range(3)] for j in range(3)]



そうすれば解決する。

>>> sasasa_array[0][0] = 'sa'

>>> print(sasasa_array)
[['sa', '', ''], ['', '', ''], ['', '', '']]



または冗長になるかもしれないけれど全部書いてしまうのも一つの手

>>> dadada_array = [['','',''],['','',''],['','','']]

>>> dadada_array[0][0] = 'da'

>>> print(dadada_array)
[['da', '', ''], ['', '', ''], ['', '', '']]

おわりに

こういうところでハマるとしんどい