生成器:在函数内部包含yield关键,那么该函数执行的结果就是生成器。
生成器就是迭代器。
def func(): print('first') yield 111111 print('second') yield 222222 print('third') yield 333333g=func()
yield的功能:
1,把函数结果做成生迭代器(以一种优雅的方式封装好_iter_)
2,函数暂停与在继续运行的状态是由yield来保存的
yield和return的比较??
相同:都有返回值的功能
不同:return只能返回一次值,而yield可以返回多次值
23:13
三元表达式:
正常的语法写一个if判断:
def foo(): if x > 3: return 'ok' else: return 'no'
三元表达式的写法是:
条件成立的结果放在左边,中间写判断条件,右边写不成立的条件
x=10 res ='ok' if x > 3 else 'no'
列表解析:
可以讲for循环直接写到列表中,例如:写了一个向空列表添加值的功能:
l=[]for i in range(10): l.append('egg%s' %i)print (l)
列表解析就是将for循环需要执行的写在列表左边,执行条件写在右边。
l=[]l=['egg%s %i' %i for i in range(10) if i >= 5 ]print(l)
如果for循环有条件的话:
需要加到for循环的后边。
应用:
比如说将列表里的值全都变成平方:
numb=[1,2,3,4,5]num_new=[items**2 for item in nums if item > 3]print (nums_new)
列表是将列表的值全部加载出来,会很耗内存,我们可以利用()来解决。
num_new=(items**2 for item in nums if item > 3)
print(num_new)
print(next(g))
print(next(g))