python筆記-5(內置函數)
一、內置函數
1、abs()--取絕對值函數
print(abs(-0.11)) x=-0.01 y=0.11 print(abs(x),abs(y)) ------------------------------ 0.11 0.01 0.11
2、all()--判斷可叠代對象內是否有0或false或元素為空
all(iterable)如果非可叠代對象,則會報錯
>>> all(123) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: ‘int‘object is not iterable print(all([0,-5,-1]))#0為假,負數為真 print(all([-1,-2,-3])) print(all([1,2,3,‘false‘])) print(all([1,2,3,‘false‘,‘‘]))#有空對象 print(all([1,2,3,False]))#有False print(all([])) print(all({‘0‘:‘1‘})) print(all({0:‘1‘})) print(all({})) print(all(‘‘)) #all 可叠代的對象內 如果存在假的 則返回false。此時空的為真 #any 可叠代的對象內 如果存在真的 則返回true 此時空的為假---------------------------------- False True True False False True True False True True
3、any()---判斷給定的可叠代參數 iterable 是否全部為空對象,如果都為空、0、false,則返回 False,如果不都為空、0、false,則返回 True。
any 與all用法相似 需要用Iterable
any(Iterable)
print(any([0,1,3])) print(any([])) print(any([-1])) print(any([0])) print(any([0,-1]))------------------------------ True False True False True
4、bin()--- 將數字轉換為二進制
print(‘bin 將數字轉換為二進制‘) print(bin(255)) print(bin(-255)) print(bin(4)) print(bin(-4)) ---------------------- 0b11111111 -0b11111111 0b100 -0b100
5、bool()---布爾值判斷
空和0 為假,需要註意0的情況,如list[0]、dict{0:123}這種情況為真
print(bool(0))#假 print(bool(1)) print(bool(-1)) print(bool([]))#假 print(bool([0])) print(bool([1])) print(bool([-1])) print(bool({}))#假 print(bool({0:‘01‘})) print(bool({1:‘xx‘})) print(bool({-1:‘xxx‘})) #布爾值判斷 空和0為假 ------------------------------------------------- False True True False True True True False True True True
6、bytes()---與encode方法類似
需要理解的是python中str格式與bytes格式b‘xxxxx’、r‘xxxxx‘、‘\uxxxxxx’這些格式的使用
bytes的作用為將字符串轉碼為bytes類型,實際和encode的效果一樣。
astr=‘你好‘ print(bytes(astr,encoding=‘utf-8‘))#將一個字符串裝換為b類型 print(astr.encode(‘utf-8‘)) print(astr.encode(‘gbk‘)) print(astr.encode(‘utf-8‘).decode(‘utf-8‘).encode(‘gbk‘)) # str (unicode) -> encode -> utf -8 -> decode-> unicode -> str -> encode -> gbk print(astr.encode(‘unicode_escape‘)) print(bytes(astr,encoding=‘unicode_escape‘)) print(astr.encode(‘unicode_escape‘).decode(‘unicode_escape‘)) print(astr.encode(‘unicode_escape‘).decode()) ----------------------------------------------- b‘\xe4\xbd\xa0\xe5\xa5\xbd‘ b‘\xe4\xbd\xa0\xe5\xa5\xbd‘ b‘\xc4\xe3\xba\xc3‘ b‘\xc4\xe3\xba\xc3‘ b‘\\u4f60\\u597d‘ b‘\\u4f60\\u597d‘ 你好 \u4f60\u597d
7、bytearrary()----很少用到
可以對byte類型數據進行修改,了解即可
c=bytes(‘abc‘,encoding=‘utf-8‘) print(c,c.capitalize()) print(c)#輸出c 發現大小寫沒有改變 c=c.capitalize() #c字符串不能被改變,只能重新覆蓋 print(c) d=bytearray(‘abc‘,encoding=‘utf-8‘) print(c,d) d[1]=70 print(c,d,d[1]) #c[1]=44 TypeError: ‘bytes‘ object does not support item assignment print(c,d) ------------------------------------- b‘abc‘ b‘Abc‘ b‘abc‘ b‘Abc‘ b‘Abc‘ bytearray(b‘abc‘) b‘Abc‘ bytearray(b‘aFc‘) 70 b‘Abc‘ bytearray(b‘aFc‘)
8、callable()---是否可調用
#callable()#判斷是否可調用 變量後面加()表示調用,函數可以調用,類可以調用。列表字典不能調用
print(callable({})) ---------------------- False
9、chr()--- ASCII碼轉換成字符 對應ord() 字符轉為ASCII碼
知道A 65 a97 相差32
print(chr(100)) print(chr(96)) print(chr(70)) print(ord(‘A‘)) #大A的ascii碼和小a差32 print(ord(‘a‘)) ----------------------------------- d ` F 65 97
10、compile()---僅做個了解 不常用 將str裝換成可執行的形式
平時看上去和直接使用exec、eval沒什麽區別
print(‘--------------------‘)str = "3 * 4 + 5" a = compile(str,‘‘,‘eval‘) x=eval(a) print(x) str = "for i in range(0,10,3): print(i)" c = compile(str,‘‘,‘exec‘) # 編譯為字節代碼對象 exec(c) print(‘--------------------‘) exec(str) -------------------------
--------------------
17
0
3
6
9
--------------------
0
3
6
9
11、complex()---復數 此處不做了解 一般用不著
12、dict()---生成一個空字典
a=dict() b={}#a、b兩種生成方式實際沒有區別 print(type(a),a,len(a)) print(type(b),b,len(b)) ------------------------------- <class ‘dict‘> {} 0 <class ‘dict‘> {} 0
13、dir()---查看一個變量有哪些內部方法 用於查詢
>>> import time >>> dir(time) [‘_STRUCT_TM_ITEMS‘, ‘__doc__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘altzone‘, ‘asctime‘, ‘clock‘, ‘ctime‘, ‘daylight‘, ‘get_clock_info‘, ‘gmtime‘, ‘localtime‘, ‘mktime‘, ‘monotonic‘, ‘perf_counter‘, ‘process_time‘, ‘sleep‘, ‘strftime‘, ‘strptime‘, ‘struct_time‘, ‘time‘, ‘timezone‘, ‘tzname‘] >>>
14、divmod()---求商取余 第一個為商 第二個為余數
print(divmod(10,3),divmod(100,25),divmod(3,5))#返回一個元組 第一個元素為商,第二個為余數
-----------------------------------
(3, 1) (4, 0) (0, 3)
15、eval()---用來將字符串轉換為字典、列表
16、exec()---執行str
17、lambda()----匿名函數
三種功能:數字運算與邏輯運算、數據過濾、與functools結合做數列求和求積運算
數字與邏輯運算:
print(lambda x:x+1) #輸出函數體的位置 print((lambda x:x+1)(1))#定義一個函數 接收左邊的x 右邊表示要輸出結果 x+1 print((lambda x:x if x >10 else 10)(5)) #定義一個函數 左邊為輸入x 右邊如果x>10則輸出x 否則輸出y 用括號調用 tmp_x=lambda x:x if x>10 else 20 #將函數體賦值 相當於def了一個函數 print(tmp_x(5)) #函數調用 (lambda x:print(x) if x>10 else print(50))(10)#用print的方式時一樣的 -------------------------------- <function <lambda> at 0x0000015B82F62E18> 2 10 20 50
數據過濾(與map或filter結合使用,註意filter、map的區別):
t1=filter(lambda i:i>3,range(7)) t2=filter(lambda i:i*3,range(7)) print(t1) for i in t1: print(i) print(t2) for i in t2: print(i) #lambda不僅能表示函數運算還能表示一種關系 配合filter進行過濾 print(‘!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!‘) #t3=map(lambda i:i*3,range(7)) t3=map(lambda i:i>3,range(7))#與filter對比 print(t3) for i in t3: print(i) ------------------------------------------- <filter object at 0x000001B68E7EFC50> 4 5 6 <filter object at 0x000001B68E7EFCC0> 1 2 3 4 5 6 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! <map object at 0x000001B68E7EFC88> False False False False True True True
此程序說明:filter()結合lambda使用,是完成過濾的效果,能將符合條件的值顯示出來,但是不能進行計算,所以t2=filter(lambda i:i*3,range(7))的結果為1-6,此處還需要註意range(7)表示的數字範圍為1-6,沒有7和0。filter與map對比,map所輸出的結果為布爾值,不是最後過濾出來的數據
與functools結合做數列求和求積運算:
import functools t3=functools.reduce(lambda x,y:x+y,range(101)) print(t3) t4=functools.reduce(lambda x,y:x*y,range(1,5)) print(t4) t5=functools.reduce(lambda x,y:x*y,range(5)) print(t5) ---------------------------- 5050 24 #1*2*3*4 0 #這裏從0開始
18.float()---浮點數
19、format---字符串格式輸出 先不深究
import time x=‘%Y %m %d %X‘ print(time.strftime(x))
20 frozenset()---只讀集合
a=set([1,2,3,4,5]) b=frozenset([1,2,3,4,5]) print(a,b) for i in a: print(i) for i in b: print(i) ------------------------------------------------------------ {1, 2, 3, 4, 5} frozenset({1, 2, 3, 4, 5}) 1 2 3 4 5 1 2 3 4 5
與普通集合相比,少了很多方法
21、globals()---全局表量(與locals()對比)
22、hash()---求哈希值
hh=hash(‘yomi‘) #哈希 散列函數 字典的查找方式 hash算法之後 排序 之後用折半查找 print(hh)#了解一下python內置的hash函數對於字符串來說,每次得到的值不一樣
23、hex() ---十進制轉換為十六進制
>>> print(bin(255),hex(255)) 0b11111111 0xff
24、max 與min---最大最小值的運算,註意的是列表、字典的情況
print(min({9:‘nnn‘,1:‘xxx‘}),min([1,2,3,4]),max(1,2,3,4)) ------------------------------------------------------ 1 1 4 >>> max(‘a‘,‘b‘,‘c‘) ‘c‘
25、iter()---叠代器
此處不再展開介紹,詳見叠代器章節,next ->叠代器裏面的__next__
26 、oct()---八進制轉換
print(oct(1),oct(8),oct(16)) ----------------------- 0o1 0o10 0o20
27、ord()---與chr相對應
chr ASCII碼轉換成字符 對應ord 字符轉為ASCII碼 知道A 65 a97 相差32
print(chr(100)) print(chr(96)) print(ord(‘A‘)) print(ord(‘a‘))
28、pow()---指數運算
print(pow(2,10)) 1024 print(pow(2,2)) 4
29、reversed( )---將字符串取反並拆分成叠代器
xxx=‘abc‘ y=reversed(xxx) print(y) for i in y: print(i) #反轉並變成一個叠代器 ------------------------------ <reversed object at 0x00000000027D75F8> c b a
30、round( )--- 小數點後取位數
print(round(1.23456,2)) print(round(1.23456,5)) print(round(1.23456,0)) print(round(1.23456)) ---------------------------------- 1.23 1.23456 1.0 1
31、slice()---切片(註意管前不管後)
a=[11,22,33,44,55] print(a[slice(2,4)])#切片 print(a[2:4]) ---------------------- [33,44] [33,44] #管前不管後
32、sorted()--- 排序(註意lambda的另一種使用方式)
dict_tmp={0:111,7:222,3:999,2:923,-5:122,11:114,9:-888}#這是個無序的字典,key和value的值都是無序的 print(sorted(dict_tmp))#輸出key的排序結果,此處只輸出key,列表形式輸出 print(sorted(dict_tmp.items()))#輸出key的排序結果,此處輸出key-value的對應值,列表形式輸出,key-value為元組形式 print(sorted(dict_tmp.items(),key=lambda x:x[1]))#輸出value的排序結果,輸出格式為key-value,列表形式輸出,key-value為元組形式 --------------------------------------- [-5, 0, 2, 3, 7, 9, 11] [(-5, 122), (0, 111), (2, 923), (3, 999), (7, 222), (9, -888), (11, 114)] [(9, -888), (0, 111), (11, 114), (-5, 122), (7, 222), (2, 923), (3, 999)]
33、zip()--- 組合(在key-value的結構時使用可以組合成關系,適當加工可以生成字典)
z1=[1,2,3,4,5] z2=[‘a‘,‘b‘,‘c‘,‘d‘,‘e‘] z3=zip(z1,z2)#組合成key-valued的對應形式 print(type(z3),z3) for i in z3: print(i) #叠代器 此處循環後不會下面不會有運行結果 for i,j in z3: print(i,j) ------------------------------------- <class ‘zip‘> <zip object at 0x000001D4B9659F48> (1, ‘a‘) (2, ‘b‘) (3, ‘c‘) (4, ‘d‘) (5, ‘e‘)
python筆記-5(內置函數)