1. reduce(函数,序列):
将序列以迭代的形式用函数处理.
示例程序:
有一个列表A,里面全是数字,把A里的每一个数字转化成对应的字符,如2->'2'。生成一个字符列表,然后把列表的每一个字符链接成一个字符串,每个字符之间用~链接
a=[1,2,3,4,5,6,7,8,9,0]
def num_to_str(num):
num=str(num)
return num
def str_to_strs(num1,num2):
return num1+'~'+num2
a=map(num_to_str,a)
a=reduce(str_to_strs,a)
此处将a仲字符一个一个迭代下去.但函数中必须是两个输入参数(不能多或少).不然会报错.
2.filter(function, sequence):
对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回:
>>> def f(x): return x % 2 != 0 and x % 3 != 0
>>> filter(f, range(2, 25))
[5, 7, 11, 13, 17, 19, 23]
>>> def f(x): return x != 'a'
>>> filter(f, "abcdef")
'bcdef'
我好奇将上面程序的map函数改为filter函数发现其返回的序列还是int型的完整序列.原因不明,以后填坑把.
3.lambda函数也叫匿名函数
lambda 参数:作用
作用可以是已有的函数,如:a=map(lambda x:str(x),a)
也是对a仲的数字转换成字符.
也可以直接写出处理方式如:
add2=lambda x,y:x+y
print add2(1,2) #3
lambda:"kjgsdlkjglfsdk"
这种方法则直接返回此字符串
bar =lambda:'beginman'
print bar() #beginman
这样最上方的程序就可以改为
a=[1,2,3,4,5,6,7,8,9,0]
def str_to_strs(num1,num2):
return num1+'~'+num2
a=map(lambda x:str(x),a)
a=reduce(str_to_strs,a)