1. Python 常用内建函数搜集

  • map

    map(function,iterable,…) 对可迭代函数’iterable’中的每一个元素应用‘function’方法,将结果作为list返回。

    如:

    >>> map(lambda x:x*2,range(10))
    [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
    >>> map(lambda x,y: (y + x) * 2, range(10),range(10))
    [0, 4, 8, 12, 16, 20, 24, 28, 32, 36]
    
  • filter

    filter(function or None, sequence) 对指定序列执行过滤操作。用sequence里的每个元素去调用function,最后结果保护调用结果为True的元素,如果function参数为None,返回结果和sequence参数相同。

    例:

    >>> filter(lambda x: x % 2 == 0, range(10))
    [0, 2, 4, 6, 8]
    
  • reduce

    reduce(function, sequence[, initial]) 对参数序列中元素进行累积。function 必须要有两个参数。依次从sequence取一个元素,和上次调用的结果作为参数调用function。如果给了initial 参数,那么第一次调用就用initial 和sequence第一个元素作为参数。没有给就从sequence中去两个作为参数。

    例:

    >>> reduce(lambda x,y: x * y,range(1,10))
    362880
    
  • zip

    zip([iterable,...]) 接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的list(列表)。若传入参数的长度不等,则返回list的长度和参数中长度最短的对象相同。利用*号操作符,可以将list unzip(解压)。

    例:

    >>> a = ['a', 'b', 'c']
    >>> b = [1, 2, 3, 4]
    >>> c = ['~', '!', '@', '#', '$']
    >>> zip(a, b, c)
    [('a', 1, '~'), ('b', 2, '!'), ('c', 3, '@')]
    >>> zip(*zip(a, b, c)) # 又还原了
    [('a', 'b', 'c'), (1, 2, 3), ('~', '!', '@')]
    
  • hasattr

    hasattr(object,name) 如果object对象具有与name字符串相匹配的属性,hasattr()函数返回真(true);否则返回假(False)

    例:

    >>> import os
    >>> hasattr(os,'path')
    True
    >>> hasattr(os,'path1')
    False
    
  • getattr

    getattr(object,name[,default]) 函数返回object的name属性值, 无属性会报错。

    例:

    >>> import os
    >>> getattr(os,'path')
    <module 'ntpath' from 'C:\\Users\\Golden\\Anaconda3\\lib\\ntpath.py'>
    >>> hasattr(os,'path1')
    Traceback (most recent call last):
      File "<input>", line 1, in <module>
    AttributeError: module 'os' has no attribute 'path1'