Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで3Dリスト(3次元配列)を作成する方法【サンプルコード付き】

3Dリストとは、いわゆる3次元配列のことです。本記事では、Pythonで3Dリストを作成し、その内容を整形して出力するプログラムを解説します。ここでは例として、文字列「*」を初期値とする3×2×2の3次元リストを生成しますが、仕組みを理解すれば整数など任意の要素を持つ配列にも簡単に応用できます。

3Dリストのイメージ

3次元リストは、リストの中にリスト、さらにその中にリストが入った多段構造のデータです。たとえば、3×3×2の3Dリストは次のように表現できます。

[[1,1,1],[2,2,2],[3,3,3]],
[[4,4,4],[5,5,5],[6,6,6]]

アルゴリズム

ステップ1: 作成する3Dリストの各次元のサイズを指定する。
ステップ2: ネストしたforループ(リスト内包表記)でリストを生成し、データを出力する。

サンプルコード

# Pythonで3Dリストを作成するプログラム
import pprint

def print3D(i, j, k):
    # i×j×k の3次元リストを生成
    lst = [[['*' for cc1 in range(i)] for cc2 in range(j)] for r in range(k)]
    return lst

# ドライバーコード
c1 = 3
c2 = 2
r = 2

# pprintモジュールで整形して出力
pprint.pprint(print3D(c1, c2, r))

出力結果

[[['*', '*', '*'], ['*', '*', '*']],
 [['*', '*', '*'], ['*', '*', '*']]]

コードの解説

print3D(i, j, k) 関数は、引数として受け取った3つのサイズをもとに、3層のネスト構造を持つリストを生成します。最も内側のリスト内包表記 ['*' for cc1 in range(i)] が長さiのリストを作り、それを range(j) でj回、さらに外側を range(k) でk回繰り返すことで、i×j×k の3次元リストが完成します。

出力には標準ライブラリの pprint(pretty-print)モジュールを使用しています。通常の print() 関数でも出力は可能ですが、pprint.pprint() を使うと入れ子になったデータ構造が自動的に整形され、視認性が大きく向上します。多次元配列のように複雑な構造を確認したい場合に特に便利です。

なお、要素の初期値は「*」以外にも自由に変更できます。たとえば [0 for cc1 in range(i)] とすれば、すべて0で初期化された整数型の3次元配列になります。

  1. Pythonで2つの未ソートのリストをマージしてソート済みリストを作成する方法

    ここでは、ユーザーが入力した2つのリストが与えられます。各リストの要素はソートされていない状態です。この記事の目的は、これら2つの未ソートのリストを1つにマージし、その後リスト全体を昇順に並べ替えることです。例入力: A[] = {100, 50, 150} B[] = {200, 30, 20} 出力: マージ後のリスト: {20, 30, 50, 100, 150, 200}アルゴリズムステップ1: まず、ユーザー入力による2つのリストを作成します。 ステップ2: 最終的なマージリストのサイズは「1つ目のリストのサイズ + 2つ目のリストのサイズ」になります。 ステップ3: s

  2. Pythonで空のリストを作成する方法|[]とlist()の2つの基本テクニック

    Pythonでプログラムを書いていると、「まず空のリストを用意しておいて、あとからデータを追加していきたい」という場面によく出会います。たとえば、forループで条件に合う要素だけを集めるときや、ユーザー入力を順次蓄積するときなどが代表例です。 Pythonで空のリストオブジェクトを作成する方法は、大きく分けて2つあります。1つ目は、代入文で角括弧 [] の中に何も要素を書かない方法。2つ目は、組み込み関数 list() を引数なしで呼び出す方法です。 方法1:角括弧 [] を使って空のリストを作る 最もシンプルで広く使われているのがこの書き方です。角括弧の中を空にして代入するだけで、空のリ