我曾在不止一篇博客里提及过python的高级函数这个问题,当然网上也有很多的相关示例,今天记录一下关于filter这个函数的一点使用场景。
str_list=['//img14.360buyimg.com/n5/s85x85_jfs/t1/7121/5/4850/249681/5bdc086dE0d08ee7e/65767cb85c91701b.jpg',
'//img12.360buyimg.com/n5/s85x85_jfs/t13660/244/908634455/116594/90b4ea04/5a166e06N37fd1f80.jpg',
'//img13.360buyimg.com/n5/s85x85_jfs/t1/1722/26/14622/177790/5bdc077bEff4fa3f0/8731fb913db9d162.jpg',
'//img12.360buyimg.com/n5/s85x85_jfs/t23962/302/1501171450/183027/6382020c/5b626cf2Na5a20c37.jpg',
'//img11.360buyimg.com/n5/s85x85_jfs/t1/98999/25/1173/131686/5dba7e95E32c6412e/b674669c4b0bd627.jpg',
'//img14.360buyimg.com/n5/s85x85_jfs/t1/106804/13/19274/337597/5e9e58fbE9e0c598d/7c676342231e02c9.jpg',
'//img13.360buyimg.com/n5/s85x85_jfs/t1/99513/12/16100/181356/5e781783Ef30d358e/70e73a6432cb1e27.jpg',
'//img30.360buyimg.com/n1/jfs/t3217/357/968924034/172389/3287463/57c3af46Nf5765289.jpg',
'//img30.360buyimg.com/n1/jfs/t3049/306/997060500/142959/94c2cf61/57c3aea5N2907c9a3.jpg',
'//img30.360buyimg.com/n1/jfs/t8533/240/1924494415/335123/5b8422f/59c096b1Ndb899462.jpg']
如上所示,我想筛选出列表里含有s85xs85的所有元素,生成一个新的列表:可能对于我这种小白来讲,第一想法就是遍历列表,针对每一个元素进行判断,然后把符合的元素放进一个新的列表里,紧接着就是一大段的代码。但是这个小的要求其实很简单,用filter很容易实现。
def filter_pic(link):
return 's85x85' not in link
new_list=list(filter(filter_pic,str_list))
如上所示,当然我这是筛选出了不含有s85xs85的元素,有人会说为什么要前面加上一个list转化一下,是因为转化之前得到的结果并不是列表的形式(一种类似object的形式),如果我们想要获取到结果就需要用list函数转化一下。
其实重要的不是介绍这个函数有多厉害,而是觉得既然我们了解了这个函数,也能带来简便,那我们就养成去用的习惯,这样也能提升我们代码的简洁性,另外,上面的代码也可以改变一下,不用去定义这个函数了,而是用匿名函数的形式来实现,大家可以自己动手尝试一下,这里不做示例了。
至于其他的高级函数的运用,会在不久以后做一个总结,以便于和大家更好的交流,提升。