filter()函数

参考: 日経ソフトウエア 2021年11月号 [雑誌], p.129

# 数値リストの中から偶数だけの合計を計算する

# 最初に思いついた処理:
import numpy as np
def total_of_even(numbers):
    numbers = np.array(numbers)
    numbers = numbers[numbers%2==0] # 偶数だけのリストに変えて、
    return np.sum(numbers) # 総和して返す。
    
# テキストの模範例(を2行に分けた):
def sum_of_even(numbers):
    numbers = filter(lambda x: x%2 == 0, numbers) # 偶数だけのリストに変えて、
    return sum(numbers) # 総和して返す。
    
numbers = [1,2,3,4,5,6,7,8,9,0]    
print(total_of_even(numbers))
print(sum_of_even(numbers))    


# filter()函数の構文:
# filter(函数, リスト)
# 函数をリストの各要素に適用し、trueが返ってくる要素をfilterオブジェクトとして返す。
def larger_than_5(val):
    return val > 5
print(list(filter(larger_than_5, numbers)))