內建函數
通過Python自帶的幫助文檔能查詢到Python所有的內build-in function內置函數,下面主要介紹如下常用內置函數,幫助手冊搜索隨意存在的內鍵函數則能找到如下表。
常用內置函數剖析:
標識:id,返回對象的唯一標識,cpython的內存地址
哈希:hash(),返回一個對象的hash值
類型:type(),返回對象的類型,例如,int、float、str、complex等
類型轉換:float() int() bin() hex() otc() bool() list() tuple() list() set() dict() complex() bytes() bytearray()
輸入input(),接收用戶的輸入,返回一個字符串
打印:print(*objects,sep='',end='\n',file=sys.stdout.....):打印輸出,默認使用空格字符進行分隔,結尾換行,輸出到控制台,返回值為None
長度對象:len(),返回元素個數
isinstance(obj,class_or_tuple):判斷對象object是否是某種類型或元組中列出的某種類型,示例:isinstance(nums,(list,tuple,set))
issubclass(cls,class_or_tuple):判斷類型cls是否是某種類型的子類或元組中列出的某個類型的子類 issubclass(True,int)
絕對值abx(x),x為數值,返回一個數的絕對值
最大值max(args1,args2,*args),最小值min(args1,args2,*args) :返回最大值最小值
round(x),四舍六入五取偶(距離它最近的偶數)round(5.6) # 6
pow(x,y),等價於x**y
range(stop),從0開始到stop-1的可迭代對象,range(start,stop[step])從start開始到stop結束,步長為step的可迭代對象
divmod(x,y),等價於tuple(x//y,x%y)
sum(iterable[,start])對可迭代對象求和,sum(range(1,10,2)
chr(i):給一定范圍內的整數,返回對應的字符 chr(97) a 示例:"".join(i for i in range(97,123))
import random "".join(random.choices("".join(chr(i) for i in range(97,123)),k=20)) "".join(random.choices([chr(j) for j in range(97,123)],k=10)) "".join(random.choice([chr(j) for j in range(97,123)]) for j in range(10))
"".join([chr(random.randint(97,123)) for i in range(10)]) [ chr(i) for i in range(97,123) ] #26個字母
ord():返回字符對應的十進制數,示例,ord('a')
str():字符串
sorted(iterable):返回一個權限的列表,默認為升序
sorted([1,2,3]) # [1,2,3] sorted([1,2,3],reverse=True) #[3,2,1]
reversed(seq):返回一個翻轉元素的迭代器
list(reversed('1234')) reversed(sorted({1,5,9})) #<list_reverseiterator at 0x1701f2e9780>
enumerate(seq,start=0)枚舉:迭代一個序列,返回索引數字和元組構成的二元組
start表示索引開始的位置,默認為0
for x in enumerate([2,4,6,8]): print(x) 輸出: (0, 2) (1, 4) (2, 6) (3, 8)
for x in enumerate('abcdef'):
print(x)
從任意下標開始可指定start=int傳參
for x in enumerate([1, 2, 3, 4], start=1): print(x) # outer D:\Preview\venv\Scripts\python.exe D:/Preview/t1.py (1, 1) (2, 2) (3, 3) (4, 4)
iter(iterable)、next(iterator,[,default]):iter將一個可迭代對象封裝成一個迭代器,next()對一個迭代器取下一個元素,如果全部元素都取過了,再次next()會拋出異常StopIteration
it = iter(range(10)) next(it) for x in it: print(x) next(it) #報錯拋異常
可迭代對象
能夠通過迭代一次次返回不同的元素的對象,所謂相同,不是指值是否相同,而是元素在容器中是否是同一個,例如列表中值是可以重復的[1,1,2,2]雖然值是一樣,但是不同的元素
可迭代對象未必有序,未必可索引
可迭代對象有:list tuple set dict string bytes bytearray range set 生成器等
可以使用成員運算符in not in in本質上是對線性結構遍歷對象,但是非線性結構采用的是hash值,效率很高。
3 in range(10) # true 2 in (x for x in range(10)) #迭代器
迭代器
特殊的對象,一定是可迭代對象,具備可迭代對象的特征,通過iter方法能將一個可迭代對象封裝成一個迭代器
通過next()方法能將迭代器中的元素迭代,迭代器為惰性對象
生成器對象就是迭代器對象
for x in iter(range(10)): #iter能將可迭代對象封裝成迭代器 print(x)
可使用next()驅動
a = (x for x in range(10)) next(a) type(a) for i in a: print(i) next(a)
拉鏈函數zip(*iterable):像拉鏈一樣,把多個可迭代對象合並在一起,返回一個迭代器,將每次從不同的對象中取到的元素合並成一個元組
list(zip(range(10),range(3))) #[(0, 0), (1, 1), (2, 2)] list(zip(range(10),range(10),range(5),range(10))) #[(0, 0, 0, 0), (1, 1, 1, 1), (2, 2, 2, 2), (3, 3, 3, 3), (4, 4, 4, 4)] #取最短的 d = dict(zip(range(10),range(5))) #{0: 0, 1: 1, 2: 2, 3: 3, 4: 4}