标签:mat 生成 col 推导式 构建 style 级别 作用 返回
一、生成器函数: 我们之前学的一般的函数: def fun(x): x+=1 return x fun(5) # 函数名+()是函数的执行命令,并且接受函数的返回值。 生成器函数: def fun(x): x+=1 print(666) yield x x+=3 yield ‘alex‘ g=fun(5) #这个执行的结果是生成器的对象 print(g.__next__()) #每一个netx执行对应的yield上面的所有语句 print(g.__next__()) #一个next对应一个yield,写多了会报错 yield的作用:yield将值返回给:生成器对象.__next__()
区别一:自定制的区别 def fun(x): #可以制定制取得什么值 x+=5 yield x x+=3 yield x x+=1 yield x g=fun(3) print(g.__next__()) 区别二:内存级别的区别 1、迭代器是需要可迭代对象进行转化。可迭代对象非常占内存。 2、生成器直接创建,不需要转化,从本质就节省内存。 def fun(): for i in range(10000000): yield i g=fun() for j in range(50): #虽然有很多数,但是我只生成50个! print(g.__next__())
send可以给上一个yield传值: def fun(): count=yield 6 print(count) yield 7 yield 8 g=fun() next(g) g.send(‘alex‘) next(g) 最后一个yield永远得不到send的值 def fun(): count=yield 6 print(count) count1=yield 7 print(count1) yield 8 g=fun() next(g) g.send(‘alex‘) g.send(‘wusir‘)
1、循环模式,变量(加工后的变量)for 变量 in iterable l=[i for i in range(100)] print(l) l2 = [‘python{}期‘.format(i) for i in range(1,16)] print(l2) 2、筛选模式,变量(加工后的变量)for 变量 in iterable if 条件 print([i for i in range(1,31) if i % 3 == 0]) print([i**2 for i in range(1,31) if i % 3 == 0])
g=(i for i in range(100000)) print(next(g)) print(next(g)) print(next(g)) 或者使用for循环取出需要的那一部分的值: g=(i for i in range(100000)) for j in range(20): print(next(g))
标签:mat 生成 col 推导式 构建 style 级别 作用 返回
原文地址:https://www.cnblogs.com/banjh/p/9512915.html