我是靠谱客的博主 风趣红酒,最近开发中收集的这篇文章主要介绍生成器的两种方式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

生成器 Generator(python2.5及之后)
什么是生成器
——生成器能够动态提供数据对象,生成器对象也是可迭代对象
生成器有两种:
生成器函数
生成器表达式
------------------------------------------------------------------------------------------------------------------------------------------------------------------
生成器函数的定义:
含有yield 语句的函数是生成器函数,此函数被调用时返回一个生成器对象
yield 翻译为产生(或生产)
————
yield 语句
 语法:
yield 表达式
说明:
——yield 用于def函数中,目的是将此函数作为生成器函数使用;
——yield 用来生成数据,供迭代器的next(it)函数使用。
————————
生成器函数示例:
def myyield():
    # print("yield函数被调用")
    yield 2
    yield 3
    return "生成器出现错误!"
    yield 5
    yield 7
# 调用myyield()函数讲返回一个可迭代对象(生成器对象)
gen=myyield()#gen绑定生成器对象
it=iter(gen)#it绑定用于访问gen生成器的迭代器
print(next(it))
print(next(it))
print(next(it))
print(next(it))
print(next(it))

>>>>>
2
3
Traceback (most recent call last):
  File "ketang.py", line 50, in <module>
    print(next(it))
StopIteration: 生成器出现错误!
——————————
def myinteger(begin,end):
    n=begin
    while n<end:
        print("即将生成:",n)
        yield n
        n+=1
for x in myinteger(10,15):
    print(x)
>>>>>
即将生成: 10
10
即将生成: 11
11
即将生成: 12
12
即将生成: 13
13
即将生成: 14
14
————————

生成器函数说明:
——生成器函数的调用将返回一个生成器对象,生成器对象是一个可迭代对象
——生成器函数调用return语句会触发一个StopIterator 异常 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

生成器表达式
语法:
(表达式 for 变量 in 可迭代对象 [if 真值表达式 ] )
注:if 子句可以省略
作用:
用推导式形式生成一个新的生成器

示例:
gen=(x**2 for x in range(1,5))
it=iter(gen)
next(it) #1
next(it) #4
next(it)#9
next(it)#16
next(it)#StopIterator

——————————
def isodd(a):
    if a%2==1:
        return True
    return False

# 这是用一个生成器表达式生成100以内奇数的立方(是不会生成全部数据,只有用的时候调取一个数)#

for x in (x**3 for x in range(100) if isodd(x)):
    print(x , end="")

# 先一次性生成100以内奇数的立方存于列表中然后在循环打印

for x in [x**3 for x in range(100) if isodd(x)]:
    print(x , end="")
————————————

转载于:https://www.cnblogs.com/qxh-beijing2016/p/10734113.html

最后

以上就是风趣红酒为你收集整理的生成器的两种方式的全部内容,希望文章能够帮你解决生成器的两种方式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部