python内置函数
内置函数详解:https://docs.python.org/3/library/functions.html?highlight=built#ascii
abs() # 取绝对值 dict() # 把数据转为字典 help() # 帮助 min() # 找出最小值 max() # 找出最大值 setattr() # 设置属性值 bool() # 判断True or False(bool(0)、bool(Flase)、bool([])) all() # 可循环的数据集合每个元素bool()均为True;或者空列表也是True any() # 任意一个值是True即返回True dir() # 打印当前程序里的所有变量 hex() # 转换为16进制数 slice() # 提前定义切片规则 divmod() # 传入两个变量a、b,得到a//b结果和余数a%b sorted() # 列表排序sorted(li)等同于li.sort() 用法:sorted(iterable, key) ascii(2) # 只能返回ascii码 enumerate([3,2,13,4]) # 返回列表的索引 input('dasd') oct(10) # 转八进制 staticmethod() # bin(10) # 转二进制 open() # 文件打开 str() # 转字符串 isinstance() ord('a') # 返回97,ascii码中'a'位置 chr(97) # 返回'a',输入97位置返回ascii码对应字符 sum([1,4,5,-1,3,0]) # 计算列表求和 pow(100,2) # 返回x的y次方,10000 callable() # 查看函数是否可以调用,还可用于判断变量是否是函数 format() vars() # 打印变量名和对应的值 locals() # 打印函数的局部变量(一般在函数内运行) globals() # 打印全局变量 repr() # 显示形式变为字符串 compile() # 编译代码 complex() # 将一个数变为复数 ''' >>> complex(3,5) (3,5j) ''' round(1.2344434,2) # 指定保留几位小数 输出1.23 # delattr, hasattr, getattr, setattr # 面向对象中应用 hash() # 把一个字符串变为一个数字 memoryview() # 大数据复制时内存映射 set() # 把一个列表变为集合 ''' >>> set([12,5,1,7,9]) {1, 5, 7, 9, 12} '''
几个***钻古怪的内置方法用法提醒
1、compile()编译字符串为字节代码
f = open("print.py") data =compile(f.read(),'','exec') # 参数:source(字符串对象), filename(代码文件名), mode(编译代码种类exec\eval\single) exec(data) >>> str = "3 * 4 + 5" >>> a = compile(str,'','eval') >>> eval(a) 17
2、items()字典转化数组
>>> d = {} >>> for i in range(10): ... d[i] = i - 50 ... >>> print(d) {0: -50, 1: -49, 2: -48, 3: -47, 4: -46, 5: -45, 6: -44, 7: -43, 8: -42, 9: -41} >>> d.items() dict_items([(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41)]) >>> sorted(d.items()) [(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41)] >>> sorted(d.items(), key = lambda x:x[1]) [(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41)] >>> sorted(d.items(), key = lambda x:x[1], reverse=True) [(9, -41), (8, -42), (7, -43), (6, -44), (5, -45), (4, -46), (3, -47), (2, -48), (1, -49), (0, -50)]
3、字符串转代码
# eval() # 字符串转代码(只能处理单行代码)(可以拿到返回值) f = "1+3/2" eval(f) # 输出结果:2.5 eval('print("hello world")') # 输出结果:hello world # exec() # 字符串转代码(可以解析多行代码)(不能拿到返回值) code = "\nif 3>5:\n print('3 bigger than 5')\nelse:\n print('dddd')\n\n" exec(code) # 输出结果:dddd # eval和exec()返回值验证 code = ''' def foo(): print('run foo') return 1234 foo() res = eval("1+3+3") res2 = exec("1+3+3") res3 = exec(code) print('res',res,res2,res3) # 输出结果:res 7 None None
4、字符串转bytearray
# bytearray() 将字符串转为bytearray,完成修改后,decode()后,可在原内存地址修改字符串 >>> s = 'abcd路飞' >>> s 'abcd路飞' >>> s = s.encode('utf-8') >>> s b'abcd\xe8\xb7\xaf\xe9\xa3\x9e' >>> s = bytearray(s) >>> s bytearray(b'abcd\xe8\xb7\xaf\xe9\xa3\x9e') >>> s[4] 232 >>> s[4]=233 >>> s bytearray(b'abcd\xe9\xb7\xaf\xe9\xa3\x9e') >>> s.decode() 'abcd鷯飞' >>> id(s) # 修改内部元素,s指向的内存地址并不会改变 4352883880
5、map()对序列做映射
map(lambda x:x*x , [1,2,3,4,5]) # 根据提供的函数对指定序列做映射 >>> list(map(lambda x:x*x , [1,2,3,4,5])) [1, 4, 9, 16, 25] >>>def square(x) : # 计算平方数 ... return x ** 2 ... >>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方 [1, 4, 9, 16, 25] >>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数 [1, 4, 9, 16, 25] # 提供了两个列表,对相同位置的列表数据进行相加 >>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) [3, 7, 11, 15, 19]
6、filter()条件过滤
filter() # 将符合条件的值过滤出来 # filter(function, iterable) >>> list(filter(lambda x: x>3, [1,2,3,4,5])) [4, 5] import math def is_sqr(x): return math.sqrt(x) % 1 == 0 newlist = filter(is_sqr, range(1, 101)) print(newlist) """ [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] """
7、frozenset()不可变集合
>>> s = {12,3,4,4} >>> s.discard(3) # 集合删除元素,没有也不会报错 >>> s {12,4} >>> s = frozenset(s) >>> s. # 已经没有discard方法可以调用
8、zip()两个数组组成元组
zip() # 可将两个数组一一对应组成元祖 >>> a = [1,2,3,45,6] >>> b = ['a','b','c'] >>> zip(a) <zip object at 0x1034fe408> >>> list(zip(a,b)) [(1, 'a'), (2, 'b'), (3, 'c')]
9、print()带参数的打印
>>> s = 'hey, my name is alex\n, from shandong' >>> print('haifeng','gangsf',sep='<-') haifeng<-gangsf msg = "回到最初的起点" f = open("print_tofile","w") print(msg,"记忆里青涩的脸",sep="|",end="",file=f) print(msg,"已经不忍直视了",sep="|",end="",file=f) """ 生成print_tofile文件:回到最初的起点|记忆里青涩的脸回到最初的起点|已经不忍直视了 """
10、slice()切片
slice() # 实现切片对象,主要用在切片操作函数里的参数传递
# 例子:slice('start', 'stop', 'step') # 起始位置、结束位置、间距
a = range(20)
pattern = slice(3, 8, 2) # 3到8,间隔两个数
for i in a[pattern]: # 等于a[3:8:2]
print(i)
11、reduce()对参数序列中元素进行累积
reduce() 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。
reduce() 函数语法: reduce(function, iterable[, initializer]) 参数 function -- 函数,有两个参数 iterable -- 可迭代对象 initializer -- 可选,初始参数
返回值:函数计算结果
>>>def add(x, y) : # 两数相加 ... return x + y ... >>> reduce(add, [1,2,3,4,5]) # 计算列表和:1+2+3+4+5 15 >>> reduce(lambda x, y: x+y, [1,2,3,4,5]) # 使用 lambda 匿名函数 15