2020-06-23 目录:
一、生成器
1.1 什么是生成器
1.2 如何得到生成器
二、面向过程的编程思想
2.1 编程思想
2.2 面向过程
三、三元表达式
四、生成式
4.1 列表生成式
4.2 字典生成式
4.3 集合生成式
4.4 生成器表达式
五、内置函数
一、生成器
1.1 什么是生成器
生成器就是一种自定义的迭代器,用来返回多次值
好处:节省内存
return只能返回一次值,然后函数立马结束
yield:可以挂起函数,保留函数的运行状态
可以返回多次值
1.2 如何得到生成器
函数内但凡存在yield关键字,调用函数不会执行函数体代码,会得到一个返回值,这个返回值就是自定义的迭代器 def diy_range(start_num, end_num, step=1): while start_num < end_num: yield start_num start_num += step g = diy_range(1, 5, 2) print(g) # >>> <generator object diy_range at 0x000001A1F484C9E0> for i in g: print(i)
二、面向过程的编程思想
2.1 编程思想
编程思想就是编写程序的套路,与具体的技术点无关
2.2 面向过程
面向过程的核心就是过程,过程就是解决问题的步骤
基于过程编程就类似于设计一条条环环相扣的流水线
优点:将复杂的问题流程化,进而简单化
缺点:所有环节耦合到一起,环环相扣,如果要修改某个环境,有可能会牵一发而动全身,扩展性差
三、三元表达式
def max2(x,y): if x > y: return x else: return y
上面为一段选出两个值中最大值的代码,用三元表达式就可以一行代码解决:
res = x if x>y else y
即 res = 条件成立时返回的值 if 条件 else 条件不成立时的返回值
四、生成式
4.1 列表生成式
l1 = [i for i in range(1,11)] # 代替for循环将1-10存进列表
num = [1, 2, 3, 4, 5] l2 = [i for i in num if i > 3] # 取num中大于3的值存进l2
4.2 字典生成式
dic = {"name": "jason", "age": 18, "gender": "male", "level": 10} new_dic = {k + '_': str(v) for k, v in dic.items() if k != 'level'} # 除了‘level’,将dic中所有的key加上'_'。并将所有的value转换成字符串
4.3 集合生成式
s = {i for i in "hello" if i != "l"} print(s)
4.4 生成器表达式
p = (i for i in range(5)) print(p) # >>> 得到一个生成器<generator object <genexpr> at 0x000001A6C637C9E0> for i in p: print(i)
五、内置函数
5.1 abs()
取绝对值
print(abs(-5)) # >>>5
5.2 all()
① 传入可迭代对象中取出来的值,全真才为真,一假则为假
② 如果从传入的可迭代对象中取不出任何值,则默认返回 True
print(all([1,True,"abc"])) #>>>True print(all([1,True,"abc",None])) #>>>False print(all([])) # >>>True
5.3 any()
① 传入可迭代对象中取出来的值,全假才为假,一真则为真
② 如果从传入的可迭代对象中取不出任何值,则默认返回 False
print(any([0,None,False,"",1])) # >>> True
5.4 callable()
判断函数是否可以被调用,返回bool值
5.5 bin()、 oct()、 hex()
bin() 将十进制数转化成二进制数
oct() 将十进制数转换成八进制数
hex() 将十进制数转换成十六进制数
5.6 chr() 与 ord()
ord()将字符转换成对应的ASCII十进制数
chr()将十进制数转换成对应的ASCII字符
5.7 divmod()
print(divmod(10,3)) # >>>(3,1) 以元组的形式返回商和余数
5.8 enumerate
l=[111,222,333] for i,item in enumerate(l): print(i,item) # 取索引值和索引对应的值