#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# functional.py
#
def foo(x,y,* args):
sum = x + y
for n in args:
sum += n
return sum
#apply, filter, map, reduce
def main():
print foo(1,2,3,4)
print apply(foo,[1,2,3,4,5]) #apply是用于调用一个函数,函数本身也作为参数
#filter(func,seq),用函数判断序列中的元素是否合条件,为True,则选中,返回符合条件的list
print filter(lambda x : x % 2, [x for x in range(10)])
#map(func,seq),用函数应用到序列的每个元素中,并将所有结果组合成list返回
print map(lambda x : x * 2, [x for x in range(10)])
print map(lambda x, y: x + y, [1,3,5], [2,4,6])
print map(lambda x, y: (x+y, x-y), [1,3,5], [2,4,6])
print map(None, [1,3,5], [2,4,6])
#reduce 可以视为 reduce(func,x,y,z...) <=> func(func(x,y),z)...
print reduce(lambda x,y:x+y, [x for x in range(10)])
print [x for x in range(10)]
return 0
if __name__ == '__main__':
main()