【Python】二次元配列、多重配列の使い方

Python でよく利用する二次元配列の様々な使い方です。

特に二次元配列の「初期化」や今どの要素を指しているのか確認するための「インデックス」の追加の仕方など、実際にプログラムをする際に役に立つものを集めました。

 

 

Python での二次元配列の初期化

3×5 の二次元配列で、すべて0で初期化します。

【プログラム例】

(pyenv) [test@SAKURA_VPS scraping]$ cat test.py
# -*- coding: utf-8 -*-

 

multi_array = [[0 for column in range(5)] for row in range(3)] ← 3行5列

 

print(multi_array)
(pyenv) [test@SAKURA_VPS scraping]$

 

 

【実行結果】

(pyenv) [test@SAKURA_VPS scraping]$ python test.py
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
(pyenv) [test@SAKURA_VPS scraping]$

 

ただ、これだと最初にどれだけの配列を必要とするか決まっている必要があります。

しかしジャンルにもよるかもしれませんが、プログラムで最初から要素の数がすべて決まっていることは少ないと思います。

 

 

動的に二次元配列(多重配列)を作ることが難しい

あれば便利だと思うのですが、ないのが「動的」に二次元配列を作成する方法です。

最初にある程度設計が出来ていないと、バグを生み出す温床になる危険性があります。

 

最低限「行」か「列」の1つの要素数だけは決めた方がいいでしょう。

そうすればあとは決まっていない「行」もしくは「列」を「追加」すればいいだけです。

 

■例えば5列であることが分かっているけど、行数が分からない場合で、動的に二次元配列を作るプログラム

(pyenv) [test@SAKURA_VPS scraping]$ cat test.py
# -*- coding: utf-8 -*-

multi_array = [[0 for column in range(5)] for row in range(3)]

print(multi_array)

# 動的に行側の要素を追加する
multi_array.append(["test1","test2","test3","test4","test5"])

print('行側の要素を追加後')
print(multi_array)
(pyenv) [test@SAKURA_VPS scraping]$

 

■実行結果

(pyenv) [test@SAKURA_VPS scraping]$ python test.py
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
行側の要素を追加後
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ['test1', 'test2', 'test3', 'test4', 'test5']]
(pyenv) [test@SAKURA_VPS scraping]$

 

 

■要素に変数をセットしたプログラム

(pyenv) [test@SAKURA_VPS scraping]$ cat test.py
# -*- coding: utf-8 -*-

multi_array = [[0 for column in range(5)] for row in range(3)]

print(multi_array)

# 動的に行側の要素を追加する
multi_array.append(["test1","test2","test3","test4","test5"])

print('行側の要素を追加後')
print(multi_array)

v1 = 'testv1'
v2 = 'testv2'
v3 = 'testv3'
v4 = 'testv4'
v5 = 'testv5'

# 動的に行側の要素を追加する
multi_array.append([v1,v2,v3,v4,v5])

print('行側の要素を追加後')
print(multi_array)
(pyenv) [test@SAKURA_VPS scraping]$

 

 

■実行結果

(pyenv) [test@SAKURA_VPS scraping]$ python test.py
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
行側の要素を追加後
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ['test1', 'test2', 'test3', 'test4', 'test5']]
行側の要素を追加後
[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], ['test1', 'test2', 'test3', 'test4', 'test5'], ['testv1', 'testv2', 'testv3', 'testv4', 'testv5']]
(pyenv) [test@SAKURA_VPS scraping]$

 

※ただ、このプログラムを見て思ったのが、最初の要素[0, 0, 0, 0, 0]があり、そこから['test1', 'test2', 'test3', 'test4', 'test5']を追加していく方法ですが、そもそも最初の要素すら「不明」もしくは「ない」場合はどうすればいいのか?というところです。

 

 

for 文で二次元配列をループさせるシンプルな方法

これが一番汎用的で使い勝手がいいかもしれません。

個人的にはシンプルで分かりやすいので一番好きな方法です。

 

【プログラム例】

(pyenv) [test@SAKURA_VPS scraping]$ vi test.py
# -*- coding: utf-8 -*-

fruits = [['りんご','みかん','ぶどう'],['なし','いちじく','いちご'],['すいか','もも','メロン']]

for x in fruits: # 横のライン
    for y in x:  # 縦のライン
        print(y)

 

 

【実行結果】

(pyenv) [test@SAKURA_VPS scraping]$ python test.py
りんご
みかん
ぶどう
なし
いちじく
いちご
すいか
もも
メロン
(pyenv) [test@SAKURA_VPS scraping]$

 

 

 

 

 

 

 

 

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。