python 内建函数
1、标识 id
返回对象的唯一标识,CPython返回内存地址
2、哈希hash()
返回一个对象的哈希值
3、类型type()
返回对象的类型
print(type(1),type(int),type(type),type([]),type('abc'),type(list)) #返回 type——> class 执行结果: <class 'int'> <class 'type'> <class 'type'> <class 'list'> <class 'str'> <class 'type'>
4、类型转换
float() int() bin() hex() oct() bool() list() tuple() dict() set() complex() bytes() bytearray()
5、输入input([prompt])
接收用户输入,返回一个字符串
6、打印print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
打印输出默认使用空格分割,换行结尾,输出到控制台
FD(文件描述符):0(stdin:标准输入) 1(stdout:标准输出) 2(标准错误输出)
7、对象长度len(s)
返回一个集合类型的元素个数
8、isinstance(obj, class_or_tuple)
判断对象obj是否属于某种类型或者元组中列出的某个类型
print(isinstance(True, int)) print(isinstance(123, (bool, str, int))) 执行结果: True True
9、issubclass(cls, class_or_tuple)
判断类型cls是否是某种类型的子类或元组中列出的某个类型的子类
print(issubclass(bool, int)) # bool 是 int 的子类(继承关系) 执行结果: True
10、绝对值abs(x) x为数值
最大值max()最小值min()
返回可迭代对象中最大或最小值
返回多个参数中最大或最小值
11、round(x)四舍六入五取偶,round(-0.5)
print(round(1.4),round(1.5),round(1.6)) 执行结果: print(round(1.4),round(1.5),round(1.6))
12、pow(x, y)等价于x**y
13、range(stop)从0开始到stop-1的可迭代对象;range(start, stop[, step])从start开始到stop-1结束步长为step的可迭代对象
14、divmod(x, y)等价于tuple (x//y, x%y)
print(divmod(5,2)) # (5//2, 5%2) 执行结果: (2, 1)
15、sum(iterable[, start]) 对可迭代对象的所有数值元素求和
# sum = 1 sum不是关键字keyword,请不要这样指定 print(sum(range(5))) print(sum(range(5), 10)) #print(sum({range(5)})) # 错误,请使用sum(set(range(5)) 执行结果: 10 20
16、chr(i)给一一个一定范围的整数返回对应的字符
17、ord(c)返回字符对应的整数,返回的是Unicode
print(chr(65),chr(0x41)) print(ord('A'),hex(ord('A'))) # unicode 执行结果: A A 65 0x41
18、str()、repr()、 ascii()
# 字符串强制类型转换,获取一个对象的字符串表达形式 print(str(range(10)),str(list())) 执行结果: range(0, 10) []
19、sorted(iterable[, key][ reverse])排序
立即返回一个新的列表,默认升序
reverse是反转
lst = list(range(10)) lst.sort(reverse=True) # 默认升序,reverse=True:反转 print(lst) 执行结果: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
lst = list(range(10)) print(sorted(lst)) # 立即返回一个新的列表,其中待排序数据必须能够比较大小 print(sorted(lst,reverse=True)) 执行结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
''' 为了解决不同类型之间非要排序问题,提供了一个参数 key,key是函数,这个函数可以把元素强制 装换为你指定的类型,但转换后的结果只是用来比较大小的,不改变最后生成的列表中的元素本身 ''' lst = list(range(10)) newlist = lst + ['1'] print(newlist) #sorted(newlist) # TypeError: '<' not supported between instances of 'str' and 'int' print(sorted(newlist, key=int)) print(sorted(newlist + ['a', 'b'], key=str, reverse=True)) 执行结果: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, '1'] [0, 1, '1', 2, 3, 4, 5, 6, 7, 8, 9] ['b', 'a', 9, 8, 7, 6, 5, 4, 3, 2, 1, '1', 0]
lst = list(range(10)) newlist = lst + ['1'] print(sorted({x:100 for x in newlist}, key=str)) print(sorted({str(x):100 for x in newlist})) #覆盖:1 print(sorted({x:100 for x in newlist}, key=int)) 执行结果: [0, 1, '1', 2, 3, 4, 5, 6, 7, 8, 9] ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'] [0, 1, '1', 2, 3, 4, 5, 6, 7, 8, 9]
20、翻转reversed(seq)
返回一个翻转元素的迭代器
print(list(reversed("13579"))) #reversed(set(range(10))) # 无序的不能倒转 #{reversed((2, 4))} # 应使用 set(reversed((2, 4))) for x in reversed(['c','b','a']): print(x) print(reversed(sorted({1, 5, 9}))) # 迭代器,惰性的 执行结果: ['9', '7', '5', '3', '1'] a b c <list_reverseiterator object at 0x0000012FE07E38C8>
21、枚举enumerate(seq, start=0)
迭代一个序列,返回索引数字和元素构成的二元组
start表示索引开始的数字,默认是0
for x in enumerate([2,4,6,8]): print(x) for x in enumerate("abcde"): print(x,end=" ") 执行结果: (0, 2) (1, 4) (2, 6) (3, 8) (0, 'a') (1, 'b') (2, 'c') (3, 'd') (4, 'e')
22、迭代器和取元素iter(iterable)、next(iterator[, default])
iter将一个可迭代对象封装成一个迭代器
next对一一个迭代器取下一个元素,如果全部元素都取过了,再次next会抛Stoplteration异常
g = iter(range(5)) print(g) print(next(g)) print(next(g)) 执行结果: <range_iterator object at 0x000002A9B2819350> 0 1
23、可迭代对象
能够通过迭代一次次返回不同的元素的对象
所谓相同,不是指值是否相同,而是元素在容器中是否是同一个,例如列表中值可以重复的,['a', 'a'],虽然这个列表有2个元素,值一样,但是两个'a'是不同的元素,因为有不同的索引
可以迭代,但是未必有序,未必可索引
可迭代对象有:list、tuple、string、bytes、bytearray、range对象、set、dict、生成器、迭代器等
可以使用成员操作符in、not in、in本质上对于线性结构就是在遍历对象,非线性结构求hash
print(3 in range(10)) print(3 in (x for x in range(10))) print(3 in {x:y for x,y in zip(range(4),range(4,10))}) 执行结果: True True True
24、迭代器
特殊的对象,一定是可迭代对象,具备可迭代对象的特征
通过iter方法把一个可迭代对象封装成迭代器
通过next方法,迭代迭代器对象
生成器对象,就是迭代器对象
for i in iter(range(3)): print(i) g = (x for x in range(5)) print(type(g)) print(next(g)) print(next(g)) 执行结果: 0 1 2 <class 'generator'> 0 1
25、拉链函数 zip(*iterables)
像拉链一样,把多个可迭代对象合并在一起,返回一个迭代器
将每次从不同对象中取到的元素合并成一个元组
print(list(zip(range(5), range(5)))) print(list(zip(range(5),range(3),range(4)))) #木桶效应 print(dict(zip(range(3),range(3)))) print({str(x):y for x,y in zip(range(10),range(10))})
执行结果:
[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4)]
[(0, 0, 0), (1, 1, 1), (2, 2, 2)]
{0: 0, 1: 1, 2: 2}
{'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
26、all(iterable)
可迭代对象所有元素都要等效为True,或空的可迭代对象,all函数返回True
一旦可迭代对象有一个元素等效为False,all函数返回False
27、any(iterable)
可迭代对象任意一个元素等效为True,any函数返回True
空可迭代对象或所有元素都等效False,any函数返回False
lst= [True, {1}, [2, 3], 5.1, 'abc'] print(all(lst), any(lst)) print(all([]), any([])) print(all(lst + [0]), any(lst + [0])) 执行结果: True True True False False True