Python

【Python】配列の全ての要素に対して処理をする方法

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

配列の全ての要素に任意の処理をさせる

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

map(function, iterable)

書式

map()は、「第一引数に関数」「第二引数に配列」を指定することで配列の全ての要素に関数を処理できます。

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]
POINT
  • map関数の戻り値はmap型のオブジェクトになります。なのでリストとして使用する場合はlist()で変換しましょう!
  • 引数に指定する関数は、配列の要素を1つずつ取り出して処理を施すために引数が1つの関数を指定する必要があります。

内包表記

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

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()は、「第一引数に関数」「第二引数に配列」を指定することで配列の全ての要素に関数を処理して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()で変換しましょう!
  • 引数が1つの関数を指定する必要がある。

内包表記

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

l = [1, 2, 3, 4]

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

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

配列の全ての要素がTrueかどうか判定[all(iterable)]

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

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

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

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

l = []

print(all(l))
# True

配列に1つでもTrueがあるかどうか判定[any(iterable)]

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

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

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

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

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

l = []

print(any(l))
# False

配列の全ての要素がFalseかどうか判定 [not any(iterable)]

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関数などの高階関数を使うことで簡単に実装することができました。また、内包表記は高速かつお手軽なのでとても重宝します。

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

【おすすめ】Python参考書