python 学习日记4(reduce ,filter(有坑),lambda)

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)

你可能感兴趣的:(python 学习日记4(reduce ,filter(有坑),lambda))