python学习8—函数之高阶函数与内置函数
1. 高阶函数
a. map()函数
对第二个输入的参数进行第一个输入的参数指定的操作。map()函数的返回值是一个迭代器,只可以迭代一次,迭代过后会被释放。
# self define a function def map_xuan(func,array): temp = [] for i in array: tem = func(i) temp.append(tem) return temp num_1 = [1,2,5,6,9] print(map_xuan(lambda x:x**2,num_1)) # builtin function map # if the logic is simple, use lambda # if the logic is complicated, use function # the return value of map is a 迭代器 print(list(map(lambda x:x**2,num_1)))
b. filter()函数
filter()函数对第二个输入的参数进行第一个参数指定逻辑的判断,并将符合逻辑的元素输出为一个迭代器,可用list()接收。
# filter function # self define def filter_xuan(func,array): temp = [] for p in array: if func(p): temp.append(p) return temp per = ['abs','acs','asdf','adfs','avr'] print(filter_xuan(lambda n:n.endswith('s'),per)) # builtin function print(list(filter(lambda n:n.endswith('s'),per)))
c. reduce()函数
reduce()函数缩减序列长度,将其按照第一个参数指定的运算操作压到一起得到一个最终值,可以指定运算操作的初始值也可以不指定。
# reduce function from functools import reduce num_2 = [1,2,3,100] print(reduce(lambda x,y:x+y,num_2,7)) print(reduce(lambda x,y:x+y,num_2))
2. 内置函数
python内置函数共68个,如下表:
- all()遍历列表所有元素,若都为真则返回True,若有一个为假,则返回False。如果可迭代对象为空,也会返回True。相当于全部做与运算
- any()相当有全部做或运算,有真则为真
- bin()将十进制数转换为二进制数
- bool()转化为布尔值:空、None、0为False
- bytes()将字符串按照指定格式编码:bytes('你好',encoding='utf-8').decode('utf-8')
- 用什么编码就用什么解码:ascii,gbk,utf-8
- chr()按照ascii表返回数字对应的ascii符号
- dir()输出某一个对象包含的方法
- divmod()输出除法的商和余数:divmod(10,3),>>>(3,1)
- eval()提取字符串中的数据结构,如果字符串里面是数学运算,则直接返回运算结果
- hash()对不可变数据类型进行哈希运算,在同一次程序运行时,没修改过的变量哈希值不变,但是程序多次运行时,哈希值会一直改变,则不可以根据哈希值反推字符串
- help()查看某个函数的定义文档
- hex()将十进制数转换为十六进制
- isinstance()判断对象是否为某个类型:isinstance(1,int)
- globals()返回所有全局变量,locals()返回所有当前级别的局部变量
- zip()拉链函数,将两个可迭代对象一一对应起来组成元组,所有元组组成一个迭代器,多余的元素忽略
- max()函数对可迭代对象的每个元素从左到右一个数字(字母)一个的比较,并返回最大值。
- 不同数据类型之间不能比较,例如数字与字符串
- max(iterative, key = lambda x:x['age']),可以给max()指定比较的方法
- ord()输出ascii表中符号对应的数字
- pow(a,b) = a**b,次方运算;pow(a,b,c) = a**b % c
- reversed(),反转序列
- round()四舍五入
- slice()切片,如slice(3,5) = [3:5],slice(1,5,2) = [1:5:2] = [start:stop:step]
- sorted()排序,默认从小到大,
- sum()求和
- vars()没有参数的时候与locals()相同,vars(int)有参数的时候显示该对象int具有的全部方法
- __import__(),可以导入字符串类型的文件名,而import只能导入文件名