roach57
Python,Linux,运维自动化,Shell

导航

 

一.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

posted on 2016-03-07 16:24  roach57  阅读(1151)  评论(0)    收藏  举报