美文网首页
python 学习日记4(reduce ,filter(有坑),

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

作者: ililililijia | 来源:发表于2016-08-10 11:16 被阅读0次

    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(有坑),

          本文链接:https://www.haomeiwen.com/subject/ohxjsttx.html