zoukankan      html  css  js  c++  java
  • python常用函数进阶(2)之map,filter,reduce,zip

    Basic Python : Map, Filter, Reduce, Zip

    1-Map()

    1.1 Syntax
    #      fun : a function applying to the iterable object
    # iterable : such as list, tuple, string and other iterable object
    
    map(fun, *iterable)		# * token means that multi iterables is supported
    
    1.2 Working

    map() applying the given function to each item of the given iterable object.

    map() returns an iterable object called "map object".

    1.3 Examples
    # eg 1
    def addition(n): 
        return n + n 
    
    numbers = (1, 2, 3, 4) 
    result = map(addition, numbers) 
    print(list(result)) 
    >>>[2,4,6,8]
    
    # eg 2
    numbers = (1, 2, 3, 4) 
    result = map(lambda x: x + x, numbers) 
    print(list(result)) 
    >>>[2,4,6,8]
    
    # eg 3 - multi iterables
    numbers1 = [1, 2, 3] 
    numbers2 = [4, 5, 6] 
    
    result = map(lambda x, y: x + y, numbers1, numbers2) 
    print(list(result))
    >>>[5,7,9]
    

    2-Filter()

    2.1 Syntax
    #      fun : a function that tests if each element of the sequence true or not.
    # sequence : who needs to be filtered, it can be sets, lists, tuples, or containers of any iterators.
    
    filter(fun, sequence)
    
    2.2 Working

    filter() applying the given function to each item of the given sequence object, and remain the eligible element.

    filter() returns an iterator that is already filtered.

    2.3 Examples
    # eg 1
    seq = [0, 1, 2, 3, 5, 8, 13] 
    
    result = filter(lambda x: x % 2 == 0, seq) 
    print(list(result)) 
    >>>[0, 2, 8]
    

    3-Reduce()

    3.1 Syntax
    #      fun : a function applying to all elements of the sequence.
    # sequence : who needs to be computered by itself, it can be sets, lists, tuples, or containers of any iterators.
    
    filter(fun, sequence)
    
    3.2 Working
    1. At first step, first two elements of sequence are picked and the result is obtained.
    2. Next step is to apply the same function to the previously attained result and the number just succeeding the second element and the result is again stored.
    3. This process continues till no more elements are left in the container.
    4. The final returned result is returned and printed on console.
    3.3 Examples
    from functools import reduce
    
    lis = [1, 3, 5, 6, 2] 
    
    print (reduce(lambda a,b : a+b,lis)) 
    print (reduce(lambda a,b : a if a > b else b,lis)) 
    >>>17
    >>>6
    

    4-Zip()

    4.1 Syntax
    zip(*iterators)		# * token means that multi iterators is supported
    
    4.2 Working

    zip() returns a single iterator object, having mapped values from all the containers.

    4.3 Examples
    # 1. How to zip the iterators?
    name = [ "Manjeet", "Nikhil", "Shambhavi", "Astha" ] 
    roll_no = [ 4, 1, 3, 2 ] 
    marks = [ 40, 50, 60, 70 ] 
    
    mapped = list(zip(name, roll_no, marks))
    print(mapped)
    >>>[('Shambhavi', 3, 60), ('Astha', 2, 70),('Manjeet', 4, 40),('Nikhil', 1, 50)]
    
    # 2. How to unzip?
    namz, roll_noz, marksz = zip(*mapped)
    
    # 3. How to traversal them?
    players = [ "Sachin", "Sehwag", "Gambhir", "Dravid", "Raina" ] 
    scores = [100, 15, 17, 28, 43 ] 
    
    for pl, sc in zip(players, scores): 
        print ("Player :  %s     Score : %d" %(pl, sc))
    >>>
    Player :  Sachin     Score : 100
    Player :  Sehwag     Score : 15
    Player :  Gambhir     Score : 17
    Player :  Dravid     Score : 28
    Player :  Raina     Score : 43
    
  • 相关阅读:
    谨慎的覆盖clone()方法
    siverlight 实现神奇罗盘
    Java读取一个目录(文件夹)下的文件例子
    关于 Web 字体:现状与未来
    logistic回归
    泸沽湖的介绍
    with grant option与with admin option区别
    sqlldr日期格式
    对List顺序,逆序,随机排列实例代码
    索引组织表(IOT)
  • 原文地址:https://www.cnblogs.com/machine-lyc/p/11266689.html
Copyright © 2011-2022 走看看