内置函数——filter和map
filter
filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False , filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。 它的到的结果是一个迭代器
例如,要从一个list [1, 4, 6, 7, 9, 12, 17]中删除偶数,保留奇数,首先,要编写一个判断奇数的函数:
l=[1, 4, 6, 7, 9, 12, 17] print(list(filter(lambda x:True if x%2==1 else False,l)))
#结果[1, 7, 9, 17]
利用filter(),可以完成很多有用的功能,例如,删除 None 或者空字符串:重要练习
l1=['ss', '', None, 'aa '] # 判断是否有 x 而且x 祛除空格后还有值的情况就返回True print(list(filter(lambda x:True if x and x.strip() else False,l1)))
结果
['ss', 'aa']
注意: x.strip(rm) 删除 s 字符串中开头、结尾处的 rm 序列的字符。
当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' '),如下:
练习:
请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:
import math l=[] for i in range(100): l.append(i) print(list(filter(lambda x:True if math.sqrt(x)%1==0 else False,l)))
结果是 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
map
Python中的map函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。
有一个list, L = [1,2,3,4,5,6,7,8],我们要将f(x)=x^2作用于这个list上,那么我们可以使用map函数处理。
>>> L = [1,2,3,4,] >>> def pow2(x): ... return x*x ... >>> map(pow2,L) [1, 4, 9, 16]