python 学习日记4(reduce ,filter(有坑),lambda)

1. reduce(函数,序列):

将序列以迭代的形式用函数处理.

示例程序:

有一个列表A,里面全是数字,把A里的每一个数字转化成对应的字符,如2->'2'。生成一个字符列表,然后把列表的每一个字符链接成一个字符串,每个字符之间用~链接

a=[1,2,3,4,5,6,7,8,9,0]

def num_to_str(num):

num=str(num)

return num

def str_to_strs(num1,num2):

return num1+'~'+num2

a=map(num_to_str,a)

a=reduce(str_to_strs,a)

此处将a仲字符一个一个迭代下去.但函数中必须是两个输入参数(不能多或少).不然会报错.

2.filter(function, sequence)

对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回:

>>> def f(x): return x % 2 != 0 and x % 3 != 0

>>> filter(f, range(2, 25))

[5, 7, 11, 13, 17, 19, 23]

>>> def f(x): return x != 'a'

>>> filter(f, "abcdef")

'bcdef'

我好奇将上面程序的map函数改为filter函数发现其返回的序列还是int型的完整序列.原因不明,以后填坑把.

3.lambda函数也叫匿名函数

lambda 参数:作用

作用可以是已有的函数,如:a=map(lambda x:str(x),a)

也是对a仲的数字转换成字符.

也可以直接写出处理方式如:

add2=lambda x,y:x+y

print add2(1,2)  #3

lambda:"kjgsdlkjglfsdk"

这种方法则直接返回此字符串

bar =lambda:'beginman'

print bar()        #beginman


这样最上方的程序就可以改为

a=[1,2,3,4,5,6,7,8,9,0]

def str_to_strs(num1,num2):

         return num1+'~'+num2

a=map(lambda x:str(x),a)

a=reduce(str_to_strs,a)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 两本不错的书: 《Python参考手册》:对Python各个标准模块,特性介绍的比较详细。 《Python核心编程...
    静熙老师哈哈哈阅读 8,625评论 0 80
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,228评论 1 118
  • 教程地址:python进阶 - 慕课网 python函数式编程 变量可以指向函数: f = absprint(f)...
    竹口小生阅读 3,698评论 0 2
  • 不知道说什么,可是总感觉会发生什么事,就像夏天炙热的太阳,也需这就是向上的力量吧,二哈
    糖糖果ya阅读 975评论 0 0
  • 今早,刚走进教室,小W就走向我:“王老师,昨天在宿舍里发生的事情我能不能和你聊一聊”。 我简直无法接受我眼前的一切...
    飞鸟王琼阅读 3,816评论 0 8