???前言
??以下我要講解的是Python中最后剩余的重要內置函式,其中比較重要的會詳細講解,比較簡單的會直接結合代碼進行剖析
?編輯
??一、reversed內置函式
描述
reversed 函式回傳一個反轉的迭代器,語法
reversed(seq)
引數
seq -- 要轉換的序列,可以是 tuple, string, list 或 range,
回傳值
回傳一個反轉的迭代器,#使用reverse后原串列就不見了 l = [1,2,3,4,5] l.reverse() print(l) #保留原串列,回傳一個反向的迭代器 l = [1,2,3,4,5] l2 = reversed(l) print(l2) 輸出解果: [5, 4, 3, 2, 1] <list_reverseiterator object at 0x000001BF41858F40>
??二、slice內置函式
描述
slice() 函式實作切片物件,主要用在切片操作函式里的引數傳遞,語法
slice 語法:class slice(stop)
class slice(start, stop[, step])
引數說明:start -- 起始位置
stop -- 結束位置
step -- 間距
回傳值
回傳一個切片物件,l = (1,2,3,4,5,6) #先得到了一個切片規則 sli = slice(1,5,2) #按切片規則進行切分 print(l[sli]) 輸出結果: (2, 4)
??三、format內置函式
知識點 :http://t.csdn.cn/Onubp****
??四、bytes內置函式
描述
bytes 函式回傳一個新的 bytes 物件,該物件是一個 0 <= x < 256 區間內的整數不可變序列,它是 bytearray 的不可變版本,語法
以下是 bytes 的語法:class bytes([source[, encoding[, errors]]])
引數
如果 source 為整數,則回傳一個長度為 source 的初始化陣列;
如果 source 為字串,則按照指定的 encoding 將字串轉換為位元組序列;
如果 source 為可迭代型別,則元素必須為[0 ,255] 中的整數;
如果 source 為與 buffer 介面一致的物件,則此物件也可以被用于初始化 bytearray,
如果沒有輸入任何引數,默認就是初始化陣列為0個元素,
回傳值
回傳一個新的 bytes 物件,注意:
網路編程只能傳二進制
照片和視頻也是以二進制存盤
html網頁爬取到的也是編碼
#我拿到的是gbk編碼的,我想轉成utf-8編碼 print(bytes('你好',encoding='gbk').decode('gbk')) #unicode轉換為utf-8的bytes print(bytes('你好',encoding='utf-8')) 輸出結果: 你好 b'\xe4\xbd\xa0\xe5\xa5\xbd'
??五、bytearray內置函式
描述
bytearray() 方法回傳一個新位元組陣列,這個陣列里的元素是可變的,并且每個元素的值范圍: 0 <= x < 256,語法
bytearray()方法語法:class bytearray([source[, encoding[, errors]]])
引數
如果 source 為整數,則回傳一個長度為 source 的初始化陣列;
如果 source 為字串,則按照指定的 encoding 將字串轉換為位元組序列;
如果 source 為可迭代型別,則元素必須為[0 ,255] 中的整數;
如果 source 為與 buffer 介面一致的物件,則此物件也可以被用于初始化 bytearray,
如果沒有輸入任何引數,默認就是初始化陣列為0個元素,
回傳值
回傳新位元組陣列,b_array = bytearray('你好',encoding='utf-8') print(b_array) print(b_array[0]) 輸出結果: bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd') 228
??六、memoryview內置函式
描述
memoryview() 函式回傳給定引數的記憶體查看物件(memory view),所謂記憶體查看物件,是指對支持緩沖區協議的資料進行包裝,在不需要復制物件基礎上允許Python代碼訪問,
語法
memoryview(obj)
引數說明:obj -- 物件
回傳值
回傳元組串列,#切片 —— 位元組型別的切片 v = memoryview(bytearray("abcd", 'utf-8')) print(v[1]) 輸出結果: 98
??七、ord、chr和ascii內置函式
#ord 將字符按照unicode轉數字 >>>print(ord('a')) >>>print(ord('A')) >>>print(ord('1')) 97 65 49 #chr 數字按照unicode轉字符 >>>print(chr(65)) >>>print(chr(97)) A a #ascii 只要是ASCII碼中的內容就列印出來,不是就轉換為\u #ascii 包括字母、數字、符號、拉丁文 >>>print(ascii('你好')) >>>print(ascii(1)) >>>print(ascii("_12")) >>>print(ascii('a')) '\u4f60\u597d' 1 '_12' 'a'
??八、repr內置函式
描述
repr() 函式將物件轉化為供解釋器讀取的形式,語法
以下是 repr() 方法的語法:repr(object)
引數
object -- 物件,
回傳值
回傳一個物件的 string 格式,#可以判斷控制臺輸出的資料是何型別 print(repr('1')) print(repr(1)) 輸出結果: '1' 1
??九、enumerate內置函式
描述
enumerate() 函式用于將一個可遍歷的資料物件(如串列、元組或字串)組合為一個索引序列,同時列出資料和資料下標,一般用在 for 回圈當中,語法
以下是 enumerate() 方法的語法:enumerate(sequence, [start=0])
引數
sequence -- 一個序列、迭代器或其他支持迭代物件,
start -- 下標起始位置,
回傳值
回傳 enumerate(列舉) 物件,lst = ['a','b','c'] print(list(enumerate(lst))) for i in enumerate(lst): print(i) 輸出結果: [(0, 'a'), (1, 'b'), (2, 'c')] (0, 'a') (1, 'b') (2, 'c')
??十、all和any內置函式
- all:用于判斷給定的可迭代引數 iterable 中的所有元素是否有bool值為False,如果有則回傳 True,否則回傳 False,元素除了是 0、空、None、False 外都算 True,
- any:用于判斷給定的可迭代引數 iterable 是否有bool值為 True的元素,如果有一個為 True,沒有一個則回傳 False,元素除了是 0、空、FALSE 外都算 TRUE,
print(all([1,'','a'])) print(all([1,'a'])) print(all([0,123])) 輸出結果: False True False print(any(['','Ture',123])) print(any(['',0])) 輸出結果: True False
??十一、zip內置函式
描述
zip() 函式用于將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然后回傳由這些元組組成的物件,這樣做的好處是節約了不少的記憶體,我們可以使用 list() 轉換來輸出串列,
如果各個迭代器的元素個數不一致,則回傳串列長度與最短的物件相同,利用 * 號運算子,可以將元組解壓為串列,
zip 方法在 Python 2 和 Python 3 中的不同:在 Python 2.x zip() 回傳的是一個串列,
語法
zip 語法:zip([iterable, ...])
引數說明:iterabl -- 一個或多個迭代器;
回傳值
回傳一個物件,l1 = [1,2,3] l2 = ['a','b','c','d'] l3 = [{1,2},'**'] print(zip(l1,l2)) for i in zip(l1,l2): print(i) print("=======================") for i in zip(l1,l2,l3): print(i) 輸出結果: <zip object at 0x000001967CE0B600> (1, 'a') (2, 'b') (3, 'c') ======================= (1, 'a', {1, 2}) (2, 'b', '**')
??十二、filter和map內置函式
??1、filter內置函式
filter() 函式用于過濾序列,過濾掉不符合條件的元素,回傳一個迭代器物件,如果要轉換為串列,可以使用 list() 來轉換,
該接收兩個引數,第一個為函式,第二個為序列,序列的每個元素作為引數傳遞給函式進行判斷,然后回傳 True 或 False,最后將回傳 True 的元素放到新串列中,
def is_odd(x): return x % 2 == 1 ret = filter(is_odd,[1,2,4,7,9]) print(ret) print([i for i in ret]) 輸出結果: <filter object at 0x000001FF38B48640> [1, 7, 9]
??2、map內置函式
map() 函式會根據提供的函式對指定序列做映射,
第一個引數 function 以引數序列中的每一個元素呼叫 function 函式,回傳包含每次 function 函式回傳值的新串列,
ret = map(abs,[1,-4,6,-9]) print(ret) print([i for i in ret]) 輸出結果: <map object at 0x000001CF1D7C90A0> [1, 4, 6, 9]
??3、總結
filter 執行了filter之后的結果集合元素個數 <= 執行之前的個數
filter只管篩選,執行前后不會改變原來的值
map 執行前后元素個數保持不變
map執行前后原來的值可能會發生改變
??十三、sorted內置函式
??sorted內置函式使用方法
??十四、匿名函式
匿名函式:為了解決那些功能很簡單的需求而設計的一句話函式
#將以下函式變為匿名函式 def add1(x,y): return x + y add2 = lambda x,y : x + y print(add1(1,3)) print(add2(2,4)) 輸出結果: 4 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/536203.html
標籤:其他
上一篇:JVM指令手冊
下一篇:SLAM十四講CH8代碼
