概要
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', '', ''], ['', '', ''], ['', '', '']]
おわりに
こういうところでハマるとしんどい

世界標準MIT教科書 Python言語によるプログラミングイントロダクション 第2版:データサイエンスとアプリケーション
- 作者: Guttag John V.
- 出版社/メーカー: 近代科学社
- 発売日: 2017/09/01
- メディア: Kindle版
- この商品を含むブログ (2件) を見る