python学习笔记之内置函数
昨日内容回顾
- 多层语法糖
@装饰器1
@装饰器2
@装饰器3
def 函数():
从下依次向上传参,然后从上往下依次开始运行
- 有参装饰器
def 扩展(参数):
def 装饰器(实际函数):
def 封包函数(*args,kwargs):
- 递归函数
概念:函数递归就是进行调用自己
递归深度:python中最大递归深度为1000
使用前提:有明确结束条件,每次执行离结果更近
- 算法之二分法
def get_num(target_num,l):
if len(l) == 0: # 长度为0
print('没有该元素')
return
middle_index = len(l) // 2 # 整除2,获取中位数
if target_num > l[middle_index]: # 如果目标数大于中位数
l_right = l[middle_index + 1:] # 保存根据中位数切片的另一半列表
get_num(target_num,l_right) # 递归函数
elif target_num < l[middle_index]: # 如果目标数小于中位数
l_left = l[:middle_index] # 保存另一半列表
get_num(target_num,l_left) # 递归函数
else:
print('找到了')
今日学习内容
三元表达式
只实用于二选一的时候 if判断
格式:值1 if 条件 else 值2
条件成立时使用值1
条件不成立使用值2
res = a if 1 == 1 else b
print(res) a
功能较为单一,了解即可
各种生产式
利用较为简化的代码,完成需要的功能
1. 列表生产式
功能:将列表中所有元素加上指定字符
name_list = ['eason', 'jojo', 'faiz']
res = [name + '666' for name in name_list]
还可以具备筛选能力
res = [name + '666' for name in name_list if name == 'jojo']
'''
列表生成式中允许出现for和if,不能出现else,逻辑不通,单独for 和 if 都可以结合else
'''
2. 字典生成式
功能:将两个列表制作成一个字典
list = ['name', 'age', 'pwd']
list1 = ['eason', '21', 'music']
res = {list[i]: list1[i] for i in range(list)}
也可根据检索值单个提取
res = {list[i]: list1[i] for i in range(list) if i == 0 }
元组没有生成器,他不配
(迭代器)
匿名函数
概念:不通过def来定义函数,而通过lambda关键字来定义的函数称为匿名函数。
lambda函数能接收任何数量(可以是0个)的参数,但只能返回一个表达式的值,lambda函数是一个函数对象,直接赋值给一个变量,这个变量就成了一个函数对象。
格式:
lambda 参数,参数1,参数2:参数+参数1+参数2
普通函数
获取最大值
关键词:max
max(列表)
如果列表元素是纯数字,将获得最大的那个数
如果列表元素是英语字母,按照ASCII码中排序将字母转换数字进行对比,获得最大的那个
A~Z:65 - 90 a~z:97-122
返回字典V值
def index(k):
return info[k]
print(max(info,key=index))
一行代码:
print(max(info, key=lambda key:info[key]))
重要的重要内置函数
map映射
map映射
列表全部自增整形
res = map(lambda x: x + 10, l1)
zip拉链
zip拉链
将列表中的元素一一对应
zip多个列表,根据最短的那个列表来组合
res = zip()
filter过滤
filter过滤
根据条件筛选目标
def index(x):
return x 目标条件
res = filter(index,列表)
写一个函数,利用函数去当做判断条件
reduce归总
reduce归总
res = reduce(lambda x, y: x + y, 列表)
如果有多个数,两位数相加,拿得到的结果,依次向后以两位数相加的形式得出总数
res = reduce(lambda x, y: x + y, 列表,数字)
最后如果加上数字,直接加上该数
常见内置函数
1.abs() 获取绝对值,(正负数都转换为正数)
2.all() 数据集中必须所有元素的布尔值都是True才能得到True结果
3.bin() 转换二进制
4.oct() 转换八进制
5.hex() 转换十六进制
6.bytes() 类型转换
7.callable() 判断当前对象是否可以加括号调用
8.chr() 根据ASCII码 将数字转换字符
9.ord() 根据ASCII码 将字符转换数字
10.dir() 查看该数据类型可以调用的内置方式,忽略带双下划线的数据
11.divmod() 分页器,超出增加页数,列出超出数
# print(divmod(250,25)) # (10, 0) 第一个参数是整数部分 第二个是余数部分
# print(divmod(251,25)) # (10, 1)
# print(divmod(249,25)) # (9, 24)
# def get_page_num(total_num,page_num): # 后面django分页器使用
# more,others = divmod(total_num, page_num)
# if others:
# more += 1
# print('需要%s页'%more)
# get_page_num(1000,30)
12.enumerate() 枚举,给列表增加序号
13.eval() 低配版,识别python代码
14.any() 数据集中必须所有元素的布尔值只要有一个True就能得到True结果
15.exec() 高配版,识别python代码