打印前10个Fibonacci数:
print(list(map(lambda x,f=lambda x,f:(f(x-1,f)+f(x-2,f)) if x>1 else 1: f(x,f), range(10))))
结果:
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
代码解析:
将这一行代码拆开来看。
map()方法的接受两个参数,第一个参数是一个方法,第二个参数是一个可迭代对象,功能是将第一个方法应用在第二个参数中的每一项上,得到一个map对象。比如:map(str, range(10))
,就是将int类型的0到9转化为str类型,但得到的是一个map对象,为了得到值,需要用list()方法将map对象转化为list对象。
lambda x,f=lambda x,f:(f(x-1,f)+f(x-2,f)) if x>1 else 1
等价于:
def f(x):
if x>1:
return f(x-1)+f(x-2)
else:
return 1