内建函数
通过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}