この記事では、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]
- 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]

配列内の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]
- 戻り値は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関数などの高階関数を使うことで簡単に実装することができました。また、内包表記は高速かつお手軽なのでとても重宝します。
それでは今回の内容はここまでです!ではまたどこかで〜( ・∀・)ノ