匿名函数
无需显式定义函数名,和函数过程,使代码更精简的lambda表达式
函数没有命名,不用担心函数名的冲突
冒号前面代表函数的参数,后面表示计算过程
>>>func=lambda x : 2*x+1
>>>func(5)
11
map()
根据提供的函数对指定序列做出相应的映射
它接受两个参数,第一个是函数对象本身,第二个是序列
map将传入的函数依次作用到序列的每个元素,并把结果作为新的迭代器返回
由于结果是一个迭代器,可通过list()函数让它返回一个新的list
例1:将数字转换为字符串
>>>list(map(str,[1,2,3]))
['', '', '']
例2:计算平方
>>>def func(x):
return x*x
>>>list(map(func,[1,2,3]))
[1, 4, 9]
还可以与lambda合用简化代码:
>>>list(map(lambda x : x*x,range(1,4)))
[1, 4, 9]
>>>list(map(lambda x,y : 2*x-y,[1,3,5],[2,4,6]))
[0, 2, 4]
filter()
和map()类似,但不会返回所有的映射值,会过滤掉不符合条件的值
它接受两个参数,第一个是判断函数,第二个是序列
例1:删除序列中的空字符
>>>def not_empty(s):
return s and s.strip()
>>>list(filter(not_empty,['a','','B',None,' ']))
['a', 'B']
例2:求奇数
>>>def odd(x):
return x%2
>>>list(filter(odd,[1,2,3,4,5,6,7,8,9]))
[1, 3, 5, 7, 9]
还可以与lambda合用简化代码:
>>>list(filter(lambda x : x%2,[1,2,3,4,5,6,7,8,9]))
[1, 3, 5, 7, 9]
1-20以内所有能被3整除的数:
>>>list(filter(lambda x: not(x%3),range(1,20)))
[3, 6, 9, 12, 15, 18]