Python

【Python】配列の全要素に処理を施す方法

この記事では、Pythonで配列の全要素に関数などの処理を施す方法を解説します。

配列の全要素に簡単な処理を施したい場合、for文をいちいち書いて処理するのはめんどくさいし効率もよくありません。なので、Pythonに用意されている組み込み関数や内包表記を使って効率よく配列を処理しましょう。

それでは方法を見ていきましょう!

配列の全ての要素に任意の処理を施す

map関数または内包表記を使うことで配列の全要素に任意の処理を施すことができます。

map(function, iterable)

書式

map()は、第一引数に指定した関数の引数として第二引数に指定したイテラブルの要素を1つずつ渡して処理された結果を返します。

map(function, iterable, ...)
イテラブルは複数指定できますが、第一引数で指定する関数はイテラブルの数だけ引数を取る必要があります

サンプル

渡された関数の引数として、配列の各要素が渡され処理が実行されます。

def func(val):
    return val * 2

l = [1, 2, 3]

l_mul = map(func, l)

print(list(l_mul))
# [2, 4, 6]

もちろんラムダ式も指定できます。

l = [1, 2, 3]

l_mul = map(lambda val: val * 2, l)

print(list(l_mul))
# [2, 4, 6]

l2 = [4, 5, 6]

result = map(lambda val1, val2: val1 * val2, l, l2)
print(list(result))
# [4, 10, 18]
POINT
  • map関数の戻り値はmap型のオブジェクトになります。なのでリストとして使用する場合はlist()で変換します

内包表記

同じ処理を内包表記を使って実装することができます。

def func(val):
    return val * 2

l = [1, 2, 3]

l_mul = [func(val) for val in l]

print(list(l_mul))
# [2, 4, 6]

この程度の処理なら関数を使わなくても実装できます。

l = [1, 2, 3]

l_mul = [val * 2 for val in l]

print(list(l_mul))
# [2, 4, 6]
【Python】内包表記の使い方この記事では、Pythonの内包表記の使い方を解説します。 内包表記を使うことで単純なリストを低コストで生成することができ...

配列内のTrueの要素のみ取得する

filter関数または内包表記を使うことで配列内のTrueの要素を抜き出すことができます。

filter(function, iterable)

書式

filter()は、第一引数に指定した関数の引数として第二引数に指定したイテラブルの要素を1つずつ渡して処理された結果がTrueの場合のみ要素を返します。

filter(function, iterable)

サンプル

以下のコードでは、リストの偶数の要素のみを取得しています。

def func(val):
    # 偶数ならTrueを返す
    return val % 2 == 0

l = [1, 2, 3, 4]

l = filter(func, l)

print(list(l))
# [2, 4]

関数には、ラムダ式が指定できます。

l = [1, 2, 3, 4]

l = filter(lambda val: val % 2 == 0, l)

print(list(l))
# [2, 4]
POINT
  • 戻り値はfilter型のオブジェクトになります。なのでリストとして使用する場合はlist()で変換します

内包表記

同じ処理を内包表記を使って実装することができます。

l = [1, 2, 3, 4]

l = [val for val in l if val % 2 == 0]

print(list(l))
# [2, 4]

配列の全ての要素がTrueかどうか

配列の全ての要素がTrueかどうかを確認するにはall()関数を使います。

書式

all()は、引数に指定した配列の全要素がTrueならばTrueを返し、1つでもFalseならばFalseを返します。

all(iterable)

サンプル

print(all([True, True]))
# True

print(all([True, False]))
# False

配列が空の場合はTrueを返します。

l = []

print(all(l))
# True

配列に1つでもTrueがあるかどうか

配列に1つでもTrueがあるかどうかを確認するにはany()関数を使います。

書式

any()は、引数に指定した配列の要素に1つでもTrueがあればTrueを返し、1つも無ければFalseを返します。

any(iterable)
print(any([True, True]))
# True

print(any([True, False]))
# True

print(any([False, False]))
# False

配列が空の場合は、Falseを返します。

l = []

print(any(l))
# False

配列の全ての要素がFalseかどうか

any()に、否定であるnotをつけることで、全ての要素がFalseの場合のみTrueを返すようにできます。

print(not any([True, True]))
# False

print(not any([True, False]))
# False

print(not any([False, False]))
# True

まとめ

この記事では、Pythonの配列の全ての要素に処理を施す方法を解説しました。

map関数やfilter関数などの高階関数を使うことで簡単に実装することができました。また、内包表記は高速かつお手軽なのでとても重宝します。

それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職「DMM WEBCAMP COMMIT」
なんと転職成功率98%!
今なら3日以内のカウンセリング枠を予約&参加で「1,000円分のAmazonギフト券」をプレゼント!