本文分析以下代码,并解释lambda函数,map函数:
nums = 11
result = list(map(lambda x : 2 ** x, range(nums)))
print(type(result), result)
for i in range(nums):
print("2 raised to power", i, "is", result[i])
学习代码,要善于将貌似复杂的代码分解开来分析,比如第二行,看起来有点复杂,那么我们就将其层层剥开学习研究。
result, 是一个列表,第三行打印结果是
<class ‘list’> [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024]
列表这个很容易看出来,是 list()的作用,那么list里面的返回对象就是map这个函数功劳了。map是将一个lambda函数,和range这个系列作为map的参数,将其运行的。
而lambda函数,就是所谓的匿名函数,是没有名字的函数,因为没有名字,所以只能临时建立临时使用。lambda函数 后面第一个 x 就是lambda的函数参数,并且这个函数调用时,它的参数是来自map的第二参数中的元素的。lambda 函数的冒号后,是函数的主体,在这个具体的函数中是将2,x 方的,也就是说,x=0, 就是2的零次方,x = 3,就是2的三次方。
range大家都知道,在这里,其实相当于一个序列(0,1,2,3,4,5,6,7,8,9,10)的。
经过这么一分析,你是不是豁然开朗了。