pythonのreduceとlambdaの再帰と内包表記

reduce

python3でreduceを使うにはfunctoolsのインポートが必要。

from functools import reduce

print(reduce(lambda x,y:x + y,range(1,10)))

lambdaの再帰

#階乗
f = lambda x:1 if x <= 1 else x*f(x -1)
f(3)
#総和
s = lambda l:0 if not l else l.pop() + s(l)
s([1,2,3,4,5])
#フィボナッチ数列
fib = lambda n:n if n ==0 or n == 1 else fib(n - 1) + fib(n - 2)
fib(5)
#最大公約数
gcd = lambda a,b:a if b == 0 else gcd(b,a % b)
gcd(1920,1080)

リスト内包表記

基本構文 [counter for counter in iterator]

[i**2 for i in range(10) if i % 5 == 0]
[0, 25]
#同じものをfilterとmapで書いてみる
list(filter(lambda x:x % 5  == 0,map(lambda x:x**2,range(10))))