一.filter 根据布尔返回值,输出返回值为True的数值
def bigger_5(x):
if x > 5:
return True
return False
filter(bigger_5, range(10))
list(filter(bigger_5, range(10)))
>[6, 7, 8, 9]
二.map 输出结果集
def bigger_5(x):
if x > 5:
return True
return False
map(bigger_5, range(10))
list(map(bigger_5, range(10)))
>[False, False, False, False, False, False, True, True, True, True]
三.any [存在True,返回True]
any(['a', 'b', 'c', 'd']) #列表list,元素都不为空或0
True
any(['a', 'b', '', 'd']) #列表list,存在一个为空的元素
True
any([0, '', False]) #列表list,元素全为0,'',false
False
any(('a', 'b', 'c', 'd')) #元组tuple,元素都不为空或0
True
any(('a', 'b', '', 'd')) #元组tuple,存在一个为空的元素
True
any((0, '', False)) #元组tuple,元素全为0,'',false
False
四.all [所有True,才为True]
all(['a', True, 'b'])
True
all(['a', False, 'b'])
False
all(['a', '', 'b'])
False
五.reduce
reduce(function, sequence, starting_value):对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用,例如可以用来对List求和:
def add(x,y): return x + y
reduce(add, range(1, 11))
55 (注:1+2+3+4+5+6+7+8+9+10)
reduce(add, range(1, 11), 20)
75 (注:1+2+3+4+5+6+7+8+9+10+20)
def fold(fn, *args):
it = iter(args)
ret = next(it)
for x in it:
ret = fn(ret, x)
return ret
def add(x, y):
return x + y
fold(add, 1, 2, 3, 4)
>10
def fold(fn, *args):
it = iter(args)
ret = next(it)
for x in it:
ret = fn(ret, x)
return ret
def add(x, y):
return x * y
fold(add, 1, 2, 3, 4)
六.lambda
lambda:这是Python支持一种有趣的语法,它允许你快速定义单行的最小函数,类似与C语言中的宏,这些叫做lambda的函数,是从LISP借用来的,可以用在任何需要函数的地方:
g = lambda x: x * 2
g(3)
6
(lambda x: x * 2)(3)
6
浙公网安备 33010602011771号