一、reversed內置函數
二、slice內置函數
三、format內置函數
四、bytes內置函數
五、bytearray內置函數
六、memoryview內置函數
七、ord、chr和ascii內置函數
八、repr內置函數
九、enumerate內置函數
十、all和any內置函數
十一、zip內置函數
十二、filter和map內置函數
1、filter內置函數
2、map內置函數
3、總結
十三、sorted內置函數
十四、匿名函數
以下我要講解的是Python中最後剩余的重要內置函數,其中比較重要的會詳細講解,比較簡單的會直接結合代碼進行剖析
描述
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 語法: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)
知識點:http://t.csdn.cn/Onubp
描述
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() 方法返回一個新字節數組。這個數組裡的元素是可變的,並且每個元素的值范圍: 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() 函數返回給定參數的內存查看對象(memory view)。所謂內存查看對象,是指對支持緩沖區協議的數據進行包裝,在不需要復制對象基礎上允許Python代碼訪問。
語法
memoryview(obj)
參數說明:obj -- 對象
返回值
返回元組列表。
#切片 —— 字節類型的切片 v = memoryview(bytearray("abcd", 'utf-8')) print(v[1]) 輸出結果: 98
#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(object)
參數
object -- 對象。
返回值
返回一個對象的 string 格式。#可以判斷控制台輸出的數據是何類型 print(repr('1')) print(repr(1)) 輸出結果: '1' 1
描述
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:用於判斷給定的可迭代參數 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() 函數用於將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的對象,這樣做的好處是節約了不少的內存。我們可以使用 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', '**')
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內置函數:
匿名函數:為了解決那些功能很簡單的需求而設計的一句話函數
#將以下函數變為匿名函數 def add1(x,y): return x + y add2 = lambda x,y : x + y print(add1(1,3)) print(add2(2,4)) 輸出結果: 4 6
感謝各位能夠看到這裡:在魯迅一篇未發表的文章中說過:“代碼看懂了不是懂一定要自己實際操作哇這樣才能更好的理解和吸收。”
最後來一句:一個人可以在任何他懷有無限熱忱的事情上成功,讓我們一起進步吧