Python - 內置函數

Python - 內置函數

filter

filter(處理邏輯, 可遍歷對象)遍歷序列中的每一個元素,判斷每一個元素的布爾值爲True則保留元素.express

用法:返回執行結果爲TRUE的入參(入參是列表字符元組)數組

print filter(lambda x:x*x-4,range(10))
    #結果:[0, 1, 3, 4, 5, 6, 7, 8, 9]

map

map(處理邏輯, 可遍歷的對象) 處理序列中的每一個元素, 元素個數及位置
與原來同樣.函數

用法:對列表入參依次執行函數。入參爲列表,有多少個列表,就應該有多少個入參。性能

print map(lambda x:x*x-4,range(10))
    #結果:[-4, -3, 0, 5, 12, 21, 32, 45, 60, 77]
    print map(lambda x,y:x*y-4,range(3),[8,9,10])
    #結果:[-4, 5, 16]

reduce

from funtools import reducegoogle

reduce(函數, 序列, 默認空參數)處理一個序列, 而後把寫進行合做操做code

用法:先把sequence中第一個值和第二個值當參數傳給function,再把function的返回值和第三個值當參數傳給fuction,最終返回一個結果值orm

#接收的入參個數只能爲2
    print reduce(lambda x,y:x*y-4,range(4))
    #結果:-40
    #計算0到100的和
    print reduce(lambda x,y:x+y, range(101))
    #結果:5050
    print reduce(lambda x,y:x+y, range(101),100)
    #結果:5150

sort(cmp=None, key=None, reverse=False) 和 sorted(iterable, cmp=None, key=None, reverse=False)

sort是容器的函數,sorted是Python的內建函數相同的參數。對象

簡單解釋一下兩函數:blog

sort(cmp=None, key=None, reverse=False)
sorted(iterable, cmp=None, key=None, reverse=False)
sort是容器的函數,sorted是Python的內建函數相同的參數。
cmp:用於比較的函數,比較什麼由key決定,有默認值,迭代集合中的一項。cmp(e1, e2) 是帶兩個參數的比較函數, 返回值:
負數: e1 < e2,
0: e1 == e2,
正數: e1 > e2。
默認爲 None, 即用內建的比較函數。
key:用列表元素的某個已命名的屬性或函數(只有一個參數而且返回一個用於排序的值)做爲關鍵字,有默認值,迭代集合中的一項。
reverse:排序規則,reverse = True 或者 reverse = False,有默認值。
  1. 對於一個無序的列表a,調用a.sort(),對a進行排序後返回a。
    而對於一樣一個無序的列表a,調用sorted(a),對a進行排序後返回一個新的列表,而對a不產生影響。

    >>> a=[1,3,5,2,9,4,7,8,6,0]
     >>> a.sort()
     >>> a
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     >>> a=[1,3,5,2,9,4,7,8,6,0]
     >>> sorted(a)
     [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
     >>> a
     [1, 3, 5, 2, 9, 4, 7, 8, 6, 0]

複雜點的

>>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
        >>> list1.sort()
        >>> list1
        [(4, 'wutenglan', 30), (6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25)]
        >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
        >>> sorted(list1)
        [(4, 'wutenglan', 30), (6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25)]
        >>> list1
        [(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]

當list由tuple組成時,默認狀況下,sort和sorted都會根據tuplp[0]做爲排序的key進行排序

  1. 基於key函數排序:

    >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
     >>> list1.sort(key=lambda employee : employee[2])
     >>> list1
     [(6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25), (4, 'wutenglan', 30)]
     >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
     >>> sorted(list1,key=lambda employee : employee[2])
     [(6, 'cangjingkong', 20), (7, 'boduoyejiyi', 25), (4, 'wutenglan', 30)]
     >>> list1
     [(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]
  2. 基於cmp函數排序:

    >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
     >>> list1.sort(cmp=lambda x,y : cmp(x[1],y[1]))
     >>> list1
     [(7, 'boduoyejiyi', 25), (6, 'cangjingkong', 20), (4, 'wutenglan', 30)]
     >>> list1=[(6,'cangjingkong',20),(4,'wutenglan',30),(7,'boduoyejiyi',25)]
     >>> sorted(list1,cmp=lambda x,y : cmp(x[1],y[1]))
     [(7, 'boduoyejiyi', 25), (6, 'cangjingkong', 20), (4, 'wutenglan', 30)]
     >>> list1
     [(6, 'cangjingkong', 20), (4, 'wutenglan', 30), (7, 'boduoyejiyi', 25)]

3.基於升序/降序排序:

>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=False)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a.sort(reverse=Ture)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Ture' is not defined
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=False)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> a.sort(reverse=True)
>>> a
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a=[1,3,5,2,9,4,7,8,6,0]
>>> sorted(a,reverse=False)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> sorted(a,reverse=True)
[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
>>> a
[1, 3, 5, 2, 9, 4, 7, 8, 6, 0]

經常使用內置函數總結

一. 數學運算類型

abs(x)

求絕對值
1. 參數能夠是整型, 也能夠是複數
2. 若參數是複數, 則返回複數的模

complex([real[,imag]])

建立一個複數

divmod(a,b)

分別取商和餘數
注意: 整型, 浮點型均可以

float([x])

將一個字符串或數轉換爲浮點數,若是五參數將返回0.0

int([x[,base]])

將一個字符轉換爲int類型,base表示進制

long([x[,base]])

將一個字符串轉換爲long類型

pow(x,y[,z])

返回x的一次冪

range([start],stop[,step])

產生一個序列, 默認從0開始

round(x[,n])

四捨五入

sum(iterable[,start])

對集合求和

oct(x)

將一個數字轉化爲8進制

hex(x)

將整數x轉化爲16進制字符串

chr(i)

返回整數i對應的ASCII字符

bin(x)

將整數轉化爲二進制字符串

bool([x])

將x轉化爲Boolean類型

二. 集合類操做

basestring()

str和unicode的超類
不能直接調用, 能夠用做isinstance判斷

format(value[,format_spec])

格式化輸出字符串
格式化的參數順序從0開始,如"I am {0},I like {1}"

unichr(i)

返回給定int類型的unicode

enumerate(sequence [, start = 0])

返回一個可枚舉的對象,該對象的next()方法將返回一個tuple

>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))       # 下標從 1 開始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

iter(0[,sentinel])

生成一個對象的迭代器,第二個參數表示分隔符

    s = '軟件是深圳的將來'   #s是一個iterable對象,它有__getitem__()方法

it = iter(s)             #it是一個iterator對象,它有 __next__()和__iter__()方法

print(s)
print(it.__next__())
print(it.__next__())
print(it.__next__())
print(it.__next__())
結果輸出以下:

軟件是深圳的將來

軟

件

是

深

max(iterable[, args...][key])

返回集合中的最大值

min(iterable[, args...][key])

返回集合中的最小值

dict([arg])

建立數據字典

list([iterable])

將一個集合類轉換爲另一個集合類

set()

返回新的集合對象。

>>>x = set('runoob')
>>> y = set('google')
>>> x, y
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l']))   # 重複的被刪除
>>> x & y         # 交集
set(['o'])
>>> x | y         # 並集
set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
>>> x - y         # 差集
set(['r', 'b', 'u', 'n'])
>>>

frozenset([iterable])

產生一個不可變的set

str([object])

轉換爲string類型

tuple([iterable])

生成一個tuple類型

xrange([start], stop[, step])

xrange()函數與range()相似,但xrnage()並不建立列表,而是返回一個xrange對象,它的行爲與列表類似,可是隻在須要時才計算列表值,當列表很大時,這個特性能爲咱們節省內存

三. 邏輯判斷

all(iterable)

一、集合中的元素都爲真的時候爲真
二、特別的,若爲空串返回爲True

any(iterable)

一、集合中的元素有一個爲真的時候爲真
二、特別的,若爲空串返回爲False

cmp(x, y)

若是x < y ,返回負數;x == y, 返回0;x > y,返回正數

四. 反射

callable(object)

檢查對象object是否可調用
一、類是能夠被調用的
二、實例是不能夠被調用的,除非類中聲明瞭__call__方法

classmethod()

一、註解,用來講明這個方式是個類方法
二、類方法便可被類調用,也能夠被實例調用
三、類方法相似於Java中的static方法
四、類方法中不須要有self參數

compile(source, filename,mode[, flags[, dont_inherit]])

將source編譯爲代碼或者AST對象。代碼對象可以經過exec語句來執行或者eval()進行求值。
一、參數source:字符串或者AST(Abstract Syntax Trees)對象。
二、參數 filename:代碼文件名稱,若是不是從文件讀取代碼則傳遞一些可辨認的值。
三、參數model:指定編譯代碼的種類。能夠指定爲 ‘exec’,’eval’,’single’。
四、參數flag和dont_inherit:這兩個參數暫不介紹

dir([object])

一、不帶參數時,返回當前範圍內的變量、方法和定義的類型列表;
二、帶參數時,返回參數的屬性、方法列表。
三、若是參數包含方法__dir__(),該方法將被調用。當參數爲實例時。
四、若是參數不包含__dir__(),該方法將最大限度地收集參數信息

delattr(object, name)

刪除object對象名爲name的屬性

eval(expression [, globals [, locals]])

計算表達式expression的值

execfile(filename [, globals [, locals]])

用法相似exec(),不一樣的是execfile的參數filename爲文件名,而exec的參數爲字符串.

getattr(object, name [, defalut])

獲取一個類的屬性

globals()

返回一個描述當前全局符號表的字典

hasattr(object, name)

判斷對象object是否包含名爲name的特性

hash(object)

若是對象object爲哈希表類型,返回對象object的哈希值

isinstance(object, classinfo)

判斷object是不是class的實例

issubclass(class, classinfo)

判斷是不是子類

len(s)

返回集合長度

locals()

返回當前的變量列表699

memoryview(obj)

返回一個內存鏡像類型的對象

next(iterator[, default])

相似於iterator.next()

object()

基類

property([fget[, fset[, fdel[, doc]]]])

屬性訪問的包裝類,設置後能夠經過c.x=value等來訪問setter和getter

reload(module)

從新加載模塊

setattr(object, name, value)

設置屬性值

repr(object)

將一個對象變幻爲可打印的格式

slice(start,end)

方法可從已有數組中返回選定的元素,返回一個新數組,包含從start到end(不包含該元素)的數組元素。

staticmethod

聲明靜態方法,是個註解

super(type[, object-or-type])

引用父類

type(object)

返回該object的類型

vars([object])

返回對象的變量,若無參數與dict()方法相似

bytearray([source [, encoding [, errors]]])

返回一個byte數組
一、若是source爲整數,則返回一個長度爲source的初始化數組;
二、若是source爲字符串,則按照指定的encoding將字符串轉換爲字節序列;
三、若是source爲可迭代類型,則元素必須爲[0 ,255]中的整數;
四、若是source爲與buffer接口一致的對象,則此對象也能夠被用於初始化bytearray.

zip([iterable, ...])

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 返回一個對象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped)  # list() 轉換爲列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c))              # 元素個數與最短的列表一致
[(1, 4), (2, 5), (3, 6)]
 
>>> a1, a2 = zip(*zip(a,b))          # 與 zip 相反,zip(*) 可理解爲解壓,返回二維矩陣式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
>>>

五. IO操做

file(filename [, mode [, bufsize]])

file類型的構造函數,做用爲打開一個文件,若是文件不存在且mode爲寫或追加時,文件將被建立。添加‘b’到mode參數中,將對文件以二進制形式操做。添加‘+’到mode參數中,將容許對文件同時進行讀寫操做
一、參數filename:文件名稱。
二、參數mode:'r'(讀)、'w'(寫)、'a'(追加)。
三、參數bufsize:若是爲0表示不進行緩衝,若是爲1表示進行行緩衝,若是是一個大於1的數表示緩衝區的大小 。

input([prompt])

獲取用戶輸入
推薦使用raw_input,由於該函數將不會捕獲用戶的錯誤輸入

open(name[, mode[, buffering]])

打開文件

與file有什麼不一樣?推薦使用open

print

打印函數

raw_input([prompt])

設置輸入,輸入都是做爲字符串處理

其餘

help()--幫助信息
相關文章
相關標籤/搜索