[Python] for文で配列を処理する方法を解説
Pythonでは、for
文を使用して配列を簡単に処理することができます。
配列は通常、リストとして表現され、for
文を用いることで各要素に順番にアクセスできます。
例えば、for
文の中で各要素を出力したり、特定の条件に基づいて処理を行うことが可能です。
また、enumerate
関数を使用することで、インデックスと要素を同時に取得することもできます。
このように、for
文は配列の要素を効率的に操作するための強力なツールです。
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)
['果物: りんご', '果物: ばなな', '果物: みかん']
まとめ
この記事では、Pythonのfor
文を使った配列の処理方法について詳しく解説しました。
配列の要素を順に処理する基本から、ネストされた配列や多次元配列の扱い、要素のフィルタリングや変換まで幅広くカバーしました。
これを機に、Pythonの配列処理を活用して、より効率的なプログラミングを実践してみてください。