首页 > 代码库 > python filter,map

python filter,map

filter

filter(...)
    filter(function or None, sequence) -> list, tuple, or string

说明:

      对sequence中的item依次执行function(item),将执行结果为True(!=0)的item组成一个List/String/Tuple(取决于sequence的类型)返回,False则退出(0),进行过滤。

例子:

 1 >>> def div(n):return n%2
 2 ... 
 3 >>> filter(div,range(5))                    #返回div输出的不等于0的真值
 4 [1, 3]
 5 >>> filter(div,range(10))
 6 [1, 3, 5, 7, 9]
 7 >>> filter(lambda x : x%2,range(10))        #lambda 函数返回奇数,返回列表
 8 [1, 3, 5, 7, 9]
 9 >>> filter(lambda x : not x%2,range(10))
10 [0, 2, 4, 6, 8]
11 >>> def fin(n):return n!=z                #过滤‘z‘ 函数,出现z则返回False
12 ... 
13 >>> filter(fin,zhoujy)                    #‘z‘被过滤
14 houjy
15 >>> filter(lambda x : x !=z,zhoujy)     #labmda返回True值
16 houjy
17 >>> filter(lambda x : not x==z,zhoujy)  #返回:字符串
18 houjy

map

map(...)
    map(function, sequence[, sequence, ...]) -> list

说明:

      对sequence中的item依次执行function(item),执行结果输出为list。

例子:

>>> map(str, range(5))           #对range(5)各项进行str操作
[‘0‘, ‘1‘, ‘2‘, ‘3‘, ‘4‘]        #返回列表
>>> def add(n):return n+n
... 
>>> map(add, range(5))           #对range(5)各项进行add操作
[0, 2, 4, 6, 8]
>>> map(lambda x:x+x,range(5))   #lambda 函数,各项+本身
[0, 2, 4, 6, 8]
>>> map(lambda x:x+1,range(10)) #lambda 函数,各项+1
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> map(add,‘zhoujy‘) [‘zz‘, ‘hh‘, ‘oo‘, ‘uu‘, ‘jj‘, ‘yy‘] #想要输入多个序列,需要支持多个参数的函数,注意的是各序列的长度必须一样,否则报错: >>> def add(x,y):return x+y ... >>> map(add,‘zhoujy‘,‘Python‘) [‘zP‘, ‘hy‘, ‘ot‘, ‘uh‘, ‘jo‘, ‘yn‘] >>> def add(x,y,z):return x+y+z ... >>> map(add,‘zhoujy‘,‘Python‘,‘test‘) #‘test‘的长度比其他2个小 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: add() takes exactly 2 arguments (3 given) >>> map(add,‘zhoujy‘,‘Python‘,‘testop‘) [‘zPt‘, ‘hye‘, ‘ots‘, ‘uht‘, ‘joo‘, ‘ynp‘]

 

python filter,map