|
发表于 2020-6-4 19:34:19
|
显示全部楼层
list (filter ( lambda x: x*2, range (10)))
拆成两部分看
首先是最外面的list(),是把结果显示出来,这个没有什么问题。
其次就是一个filter函数的用法
filter函数用法,filter(function, iterable),就是把一个function(函数,可以是自己定义的函数,也可以是匿名函数,也可以是内置函数) 映射于可迭代对象,举个例子
filter(abs,[0,1,2,3,4])把abs函数与后面列表内的元素映射,即列表内每个元素求绝对值。最后结果是一个地址,要显示可以用list(),结果是[1,2,3],可以看到0没有了
这是因为,filter只会返回结果为True的,0在python里面是False。
所以以你的提问来看 filter (lambda x: x*2, range (10)),其实是把lambda函数映射到0~9这10个数,这个lambda函数的意思是传入一个x,返回结果是x*2
当传入0时,0*2的结果是为0,其他1~9都是True,所以最终结果是[1, 2, 3, 4, 5, 6, 7, 8, 9] |
|