python常用內建函式

weixin_33763244發表於2019-03-28

內建函式是python直譯器內建的函式,由cpython執行的c語言編寫的函式,在載入速度上優於開發者自定義的函式,上一篇將python常用內建屬性說了《python常用內建屬性大全》,本篇說常用的內建函式。

當開啟python直譯器後輸入dir(__builtins__)即可列舉出python所有的內建函式:

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'Blocki
ngIOError', 'BrokenPipeError', 'BufferError', 'BytesWarning', 'ChildProcessError
', 'ConnectionAbortedError', 'ConnectionError', 'ConnectionRefusedError', 'Conne
ctionResetError', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentErro
r', 'Exception', 'False', 'FileExistsError', 'FileNotFoundError', 'FloatingPoint
Error', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarni
ng', 'IndentationError', 'IndexError', 'InterruptedError', 'IsADirectoryError',
'KeyError', 'KeyboardInterrupt', 'LookupError', 'MemoryError', 'ModuleNotFoundEr
ror', 'NameError', 'None', 'NotADirectoryError', 'NotImplemented', 'NotImplement
edError', 'OSError', 'OverflowError', 'PendingDeprecationWarning', 'PermissionEr
ror', 'ProcessLookupError', 'RecursionError', 'ReferenceError', 'ResourceWarning
', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'Syn
taxError', 'SyntaxWarning', 'SystemError', 'SystemExit', 'TabError', 'TimeoutErr
or', 'True', 'TypeError', 'UnboundLocalError', 'UnicodeDecodeError', 'UnicodeEnc
odeError', 'UnicodeError', 'UnicodeTranslateError', 'UnicodeWarning', 'UserWarni
ng', 'ValueError', 'Warning', 'WindowsError', 'ZeroDivisionError', '__build_clas
s__', '__debug__', '__doc__', '__import__', '__loader__', '__name__', '__package
__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'breakpoint', 'byt
earray', 'bytes', 'callable', 'chr', 'classmethod', 'compile', 'complex', 'copyr
ight', 'credits', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'exec
', 'exit', 'filter', 'float', 'format', 'frozenset', 'getattr', 'globals', 'hasa
ttr', 'hash', 'help', 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', '
iter', 'len', 'license', 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'n
ext', 'object', 'oct', 'open', 'ord', 'pow', 'print', 'property', 'quit', 'range
', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', 'sorted', 'staticmeth
od', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']


map函式

map函式對指定序列對映到指定函式

map(function, sequence[, sequence, ...]) -> list

對序列中每個元素呼叫function函式,返回列表結果集的map物件

#函式需要一個引數
list(map(lambda x: x*x, [123]))
#結果為:[1, 4, 9]

#函式需要兩個引數
list(map(lambda x, y: x+y, [123], [456]))
#結果為:[5, 7, 9]


def f1( x, y ):  
    return (x,y)

l1 = [ 0123456 ]  
l2 = [ 'Sun''M''T''W''T''F''S' ]
a = map( f1, l1, l2 ) 
print(list(a))
#結果為:[(0, 'Sun'), (1, 'M'), (2, 'T'), (3, 'W'), (4, 'T'), (5, 'F'), (6, 'S')]


filter函式

filter函式會對指定序列按照規則執行過濾操作

filter(...)
    filter(function or None, sequence) -> list, tuple, or string

    Return those items of sequence for which function(item) is true.  If
    function is None, return the items that are true.  If sequence is a tuple
    or stringreturn the same type, else return a list.
  • function:接受一個引數,返回布林值True或False

  • sequence:序列可以是str,tuple,list

filter函式會對序列引數sequence中的每個元素呼叫function函式,最後返回的結果包含呼叫結果為True的filter物件。

與map不同的是map是返回return的結果,而filter是更具return True條件返回傳入的引數,一個是加工一個是過濾。

返回值的型別和引數sequence的型別相同

list(filter(lambda x: x%2, [1234]))
[13]

filter(None"she")
'she'

reduce函式

reduce函式,reduce函式會對引數序列中元素進行累積

reduce(...)
    reduce(function, sequence[, initial]) -> value

    Apply a function of two arguments cumulatively to the items of a sequence,
    from left to right, so as to reduce the sequence to a single value.
    For example, reduce(lambda x, y: x+y, [12345]) calculates
    ((((1+2)+3)+4)+5).  If initial is present, it is placed before the items
    of the sequence in the calculation, and serves as a default when the
    sequence is empty.
  • function:該函式有兩個引數

  • sequence:序列可以是str,tuple,list

  • initial:固定初始值

reduce依次從sequence中取一個元素,和上一次呼叫function的結果做引數再次呼叫function。 第一次呼叫function時,如果提供initial引數,會以sequence中的第一個元素和initial 作為引數呼叫function,否則會以序列sequence中的前兩個元素做引數呼叫function。 注意function函式不能為None。

空間裡移除了, 它現在被放置在fucntools模組裡用的話要先引入: from functools import reduce

reduce(lambda x, y: x+y, [1,2,3,4])
10

reduce(lambda x, y: x+y, [1,2,3,4], 5)
15

reduce(lambda x, y: x+y, ['aa''bb''cc'], 'dd')
'ddaabbcc'


2019-03-28-18_41_19.png


相關文章