[Python] for文で配列を処理する方法を解説

Pythonでは、for文を使用して配列を簡単に処理することができます。

配列は通常、リストとして表現され、for文を用いることで各要素に順番にアクセスできます。

例えば、for文の中で各要素を出力したり、特定の条件に基づいて処理を行うことが可能です。

また、enumerate関数を使用することで、インデックスと要素を同時に取得することもできます。

このように、for文は配列の要素を効率的に操作するための強力なツールです。

この記事でわかること
  • 配列の要素を順に処理する方法
  • 二次元および多次元配列の処理方法
  • ネストされた配列の再帰的な処理
  • 配列の要素を条件に基づいてフィルタリングする方法
  • 要素を変換するためのmap関数の使用方法

目次から探す

for文で配列を処理する方法

Pythonのfor文を使うことで、配列(リスト)を簡単に処理することができます。

以下では、配列の要素を順に処理する方法、要素を変更する方法、条件付きで処理する方法について解説します。

配列の要素を順に処理する

配列の要素を順に処理する基本的な方法は、for文を使用することです。

以下のサンプルコードでは、リストの各要素を順に出力しています。

# 配列の定義
fruits = ["りんご", "ばなな", "みかん"]
# 配列の要素を順に処理
for fruit in fruits:
    print(fruit)
りんご
ばなな
みかん

配列の要素を変更する

配列の要素を変更するには、for文を使ってインデックスを指定し、要素を更新します。

以下のサンプルコードでは、リストの各要素に「果物:」というプレフィックスを追加しています。

# 配列の定義
fruits = ["りんご", "ばなな", "みかん"]
# 配列の要素を変更
for i in range(len(fruits)):
    fruits[i] = "果物: " + fruits[i]
# 変更後の配列を出力
print(fruits)
['果物: りんご', '果物: ばなな', '果物: みかん']

配列の要素を条件付きで処理する

条件付きで配列の要素を処理するには、if文を組み合わせて使用します。

以下のサンプルコードでは、リストの中から「ばなな」のみを出力しています。

# 配列の定義
fruits = ["りんご", "ばなな", "みかん"]
# 条件付きで配列の要素を処理
for fruit in fruits:
    if fruit == "ばなな":
        print(fruit)
ばなな

二次元配列の処理

二次元配列(リストのリスト)を処理する際も、for文を活用することができます。

以下では、行ごと、列ごと、要素ごとに処理する方法について解説します。

行ごとに処理する

二次元配列の各行を処理するには、外側のfor文で行をループし、内側のfor文でその行の要素を処理します。

以下のサンプルコードでは、二次元配列の各行を出力しています。

# 二次元配列の定義
matrix = [
    ["りんご", "ばなな", "みかん"],
    ["ぶどう", "もも", "さくらんぼ"],
    ["いちご", "パイナップル", "キウイ"]
]
# 行ごとに処理
for row in matrix:
    print(row)
['りんご', 'ばなな', 'みかん']
['ぶどう', 'もも', 'さくらんぼ']
['いちご', 'パイナップル', 'キウイ']

列ごとに処理する

列ごとに処理するには、行のインデックスを使って各列の要素にアクセスします。

以下のサンプルコードでは、二次元配列の各列を出力しています。

# 二次元配列の定義
matrix = [
    ["りんご", "ばなな", "みかん"],
    ["ぶどう", "もも", "さくらんぼ"],
    ["いちご", "パイナップル", "キウイ"]
]
# 列ごとに処理
for col in range(len(matrix[0])):
    column_elements = [row[col] for row in matrix]
    print(column_elements)
['りんご', 'ぶどう', 'いちご']
['ばなな', 'もも', 'パイナップル']
['みかん', 'さくらんぼ', 'キウイ']

要素ごとに処理する

要素ごとに処理するには、二重のfor文を使用して、各要素にアクセスします。

以下のサンプルコードでは、二次元配列の全ての要素を出力しています。

# 二次元配列の定義
matrix = [
    ["りんご", "ばなな", "みかん"],
    ["ぶどう", "もも", "さくらんぼ"],
    ["いちご", "パイナップル", "キウイ"]
]
# 要素ごとに処理
for row in matrix:
    for fruit in row:
        print(fruit)
りんご
ばなな
みかん
ぶどう
もも
さくらんぼ
いちご
パイナップル
キウイ

多次元配列の処理

多次元配列は、配列の中に配列が含まれる構造を持ち、より複雑なデータを扱うことができます。

以下では、次元の数に応じた処理方法、多次元配列の初期化、要素アクセスについて解説します。

次元の数に応じた処理方法

多次元配列の次元数に応じて、処理方法が異なります。

以下のサンプルコードでは、三次元配列の各要素を処理する方法を示しています。

# 三次元配列の定義
three_dimensional_array = [
    [
        ["りんご", "ばなな"],
        ["ぶどう", "もも"]
    ],
    [
        ["いちご", "パイナップル"],
        ["さくらんぼ", "キウイ"]
    ]
]
# 三次元配列の要素を処理
for matrix in three_dimensional_array:
    for row in matrix:
        for fruit in row:
            print(fruit)
りんご
ばなな
ぶどう
もも
いちご
パイナップル
さくらんぼ
キウイ

多次元配列の初期化

多次元配列を初期化する方法はいくつかありますが、リスト内包表記を使うと簡潔に初期化できます。

以下のサンプルコードでは、3×3の二次元配列を初期化しています。

# 3x3の二次元配列を初期化
rows, cols = 3, 3
matrix = [[0 for _ in range(cols)] for _ in range(rows)]
# 初期化した配列を出力
print(matrix)
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

多次元配列の要素アクセス

多次元配列の要素にアクセスするには、インデックスを指定します。

以下のサンプルコードでは、二次元配列の特定の要素にアクセスし、その値を出力しています。

# 二次元配列の定義
matrix = [
    ["りんご", "ばなな", "みかん"],
    ["ぶどう", "もも", "さくらんぼ"],
    ["いちご", "パイナップル", "キウイ"]
]
# 特定の要素にアクセス
element = matrix[1][2]  # ぶどうの次の要素、さくらんぼ
print(element)
さくらんぼ

応用例

ここでは、Pythonのfor文を使った配列の応用例について解説します。

ネストされた配列の処理、配列の要素のフィルタリング、要素の変換(マッピング)について詳しく見ていきましょう。

ネストされた配列の処理

for文でのネスト処理

ネストされた配列を処理するには、for文を二重に使用します。

以下のサンプルコードでは、ネストされた配列の各要素を出力しています。

# ネストされた配列の定義
nested_array = [
    ["りんご", "ばなな"],
    ["ぶどう", "もも"],
    ["いちご", "パイナップル"]
]
# ネストされた配列の処理
for sub_array in nested_array:
    for fruit in sub_array:
        print(fruit)
りんご
ばなな
ぶどう
もも
いちご
パイナップル

再帰的な処理

再帰を使ってネストされた配列を処理することも可能です。

以下のサンプルコードでは、再帰関数を使ってネストされた配列の全要素を出力しています。

# 再帰関数の定義
def print_nested_array(array):
    for element in array:
        if isinstance(element, list):
            print_nested_array(element)  # 再帰呼び出し
        else:
            print(element)
# ネストされた配列の定義
nested_array = [
    ["りんご", "ばなな"],
    ["ぶどう", ["もも", "さくらんぼ"]],
    ["いちご", "パイナップル"]
]
# 再帰的にネストされた配列を処理
print_nested_array(nested_array)
りんご
ばなな
ぶどう
もも
さくらんぼ
いちご
パイナップル

配列の要素をフィルタリングする

条件に基づく要素の選別

配列の要素を条件に基づいてフィルタリングするには、if文を使用します。

以下のサンプルコードでは、特定の条件を満たす要素のみを出力しています。

# 配列の定義
fruits = ["りんご", "ばなな", "みかん", "ぶどう", "もも"]
# 条件に基づく要素の選別
filtered_fruits = [fruit for fruit in fruits if "い" in fruit]
print(filtered_fruits)
['りんご', 'みかん', 'いちご']

フィルタリング関数の作成

フィルタリングを行う関数を作成することもできます。

以下のサンプルコードでは、特定の条件に基づいて要素をフィルタリングする関数を定義しています。

# フィルタリング関数の定義
def filter_fruits(fruits, condition):
    return [fruit for fruit in fruits if condition(fruit)]
# 配列の定義
fruits = ["りんご", "ばなな", "みかん", "ぶどう", "もも"]
# 条件に基づくフィルタリング
result = filter_fruits(fruits, lambda x: "も" in x)
print(result)
['もも']

配列の要素を変換する(マッピング)

map関数の使用

map関数を使うことで、配列の要素を一括で変換することができます。

以下のサンプルコードでは、リストの各要素に対して関数を適用しています。

# 配列の定義
fruits = ["りんご", "ばなな", "みかん"]
# map関数を使用して要素を変換
upper_fruits = list(map(str.upper, fruits))
print(upper_fruits)
['りんご', 'ばなな', 'みかん']

カスタムマッピングの実装

カスタム関数を使って要素を変換することも可能です。

以下のサンプルコードでは、各要素に「果物:」というプレフィックスを追加するカスタムマッピングを実装しています。

# カスタムマッピング関数の定義
def add_prefix(fruit):
    return "果物: " + fruit
# 配列の定義
fruits = ["りんご", "ばなな", "みかん"]
# カスタムマッピングを使用
prefixed_fruits = list(map(add_prefix, fruits))
print(prefixed_fruits)
['果物: りんご', '果物: ばなな', '果物: みかん']

よくある質問

for文とwhile文の違いは?

for文は、配列やリストなどの反復可能なオブジェクトの要素を順に処理するために使用されます。

一方、while文は、指定した条件が真である限り、繰り返し処理を行います。

for文は要素の数が決まっている場合に便利で、while文は条件に基づいて無限に繰り返す場合に適しています。

配列の要素を逆順に処理する方法は?

配列の要素を逆順に処理するには、reversed()関数を使用するか、スライスを使って逆順のリストを作成します。

配列の要素をスキップする方法は?

配列の要素をスキップするには、for文の中でcontinue文を使用します。

まとめ

この記事では、Pythonのfor文を使った配列の処理方法について詳しく解説しました。

配列の要素を順に処理する基本から、ネストされた配列や多次元配列の扱い、要素のフィルタリングや変換まで幅広くカバーしました。

これを機に、Pythonの配列処理を活用して、より効率的なプログラミングを実践してみてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • 条件分岐 (18)
  • 繰り返し処理 (30)
  • URLをコピーしました!
目次から探す