<div id="cnblogs_post_body" class="blogpost-body "> <p><strong><span style="font-size: 16px;">filter</span></strong></p> <p>filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。</p> <p>例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:</p> <div class="cnblogs_code"> <pre><span style="color: #0000ff;">def</span><span style="color: #000000;"> is_odd(x): </span><span style="color: #0000ff;">return</span> x % 2 == 1</pre> </div> <p>然后,利用filter()过滤掉偶数:</p> <div class="cnblogs_code"> <pre>>>>list(filter(is_odd, [1, 4, 6, 7, 9, 12, 17]))</pre> </div> <p>结果:</p> <div class="cnblogs_code"> <pre>[1, 7, 9, 17]</pre> </div> <p>利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:</p> <div class="cnblogs_code"> <pre><span style="color: #0000ff;">def</span><span style="color: #000000;"> is_not_empty(s): </span><span style="color: #0000ff;">return</span> s <span style="color: #0000ff;">and</span> len(s.strip()) ><span style="color: #000000;"> 0 </span>>>>list(filter(is_not_empty, [<span style="color: #800000;">'</span><span style="color: #800000;">test</span><span style="color: #800000;">'</span>, None, <span style="color: #800000;">''</span>, <span style="color: #800000;">'</span><span style="color: #800000;">str</span><span style="color: #800000;">'</span>, <span style="color: #800000;">'</span> <span style="color: #800000;">'</span>, <span style="color: #800000;">'</span><span style="color: #800000;">END</span><span style="color: #800000;">'</span>]))</pre> </div> <p>结果:</p> <div class="cnblogs_code"> <pre>['test', 'str', 'END']</pre> </div> <p>注意: s.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。</p> <p>当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:</p> <div class="cnblogs_code"> <p>>>> a = ' 123'<br>>>> a.strip()<br>'123'</p>
</div> <div class="cnblogs_code"> <p>>>> a = '\t\t123\r\n'<br>>>> a.strip()<br>'123'</p>
</div> <p>练习:</p> <p>请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:</p> <p>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]</p> <p>方法:</p> <div class="cnblogs_code"> <pre><span style="color: #0000ff;">import</span><span style="color: #000000;"> math </span><span style="color: #0000ff;">def</span><span style="color: #000000;"> is_sqr(x): </span><span style="color: #0000ff;">return</span> math.sqrt(x) % 1 ==<span style="color: #000000;"> 0 </span><span style="color: #0000ff;">print(</span>list(filter(is_sqr, range(1, 101))))</pre> </div> <p>结果:</p> <div class="cnblogs_code"> <pre>[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]</pre> </div> <p><strong><span style="font-size: 16px;">map</span></strong></p> <p><a class="replace_word" title="Python知识库" href="http://lib.csdn.net/base/python" target="_blank">Python</a>中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。</p> <p>有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理。</p> <div class="cnblogs_code"> <pre>>>> L = [1,2,3,4<span style="color: #000000;">,] </span>>>> <span style="color: #0000ff;">def</span><span style="color: #000000;"> pow2(x): ... </span><span style="color: #0000ff;">return</span> x*<span style="color: #000000;">x ... </span>>>><span style="color: #000000;"> list(map(pow2,L)) [</span>1, 4, 9, 16] </pre> </div> <p> </p> </div>
来源:oschina
链接:https://my.oschina.net/u/4381592/blog/3395189