python复习之生成器 Generator 和 迭代器 Iterator

什么是生成器:

    生成器是一种可以简单有效的创建迭代器的工具

生成器有两种:

    1.生成器函数

    2.生成器表达式

什么是生成器函数:

    含有yield语句的函数是生成器函数,此函数被调用时返回一个生成器对象

yield 语句

语法:

    yield 表达式

语法说明:

    yield用于def函数中,目的是将此函数作为生成器函数使用,yield用来生成数据,供迭代器的next(it)函数使用

range(start, stop, step)就是生成器函数

生成器函数说明:

    生成器函数的调用将返回一个生成器对象,生成器对象用来生成迭代器

    在生成器函数内调用return会产生一个StopIteration异常

什么是迭代器:

    是指能用next(it)函数取值的对象(实例)

用iter(object)函数可用可迭代对象(序列等或生成器)返回一个迭代器

迭代器说明:

    迭代器是访问可迭代对象的一种方法,迭代器只能往前取值不会后退

函数:

iter(x) 从一个对象中返回迭代器(x必须是可迭代对象)

next(it)从迭代器it中获取下一个记录,如果无法获取会产生一个StopIteration异常

l = [1, 2, 3, 4, 5, 6]
it = iter(l)
print(next(it)) # 1
print(next(it)) # 2
print(next(it)) # 3
print(next(it)) # 4
print(next(it)) # 5
print(next(it)) # 6
print(next(it)) # 返回异常StopIteration

def myeven(n):
    for i in range(0, n + 1, 2):
        yield i
        
for x in myeven(10):
     print(x)

 生成器表达式:

作用:

    用推导式形式生成一个新的生成器

语法:

    (表达式 for 变量 in 可迭代对象 [if 真值表达式])

gen = ( x**2 for x in range(1, 6, 2))
it = iter(gen)
next(it)  # 1
next(it)  # 9
next(it)  # 25
next(it)  # StopIteration

迭代工具函数

作用:

    生成一个个性化的可迭代对象(生成器)

函数:

    zip(iter1, iter2, ...)返回一个zip对象,此对象用于生成元组,,此元组的有最小的可迭代对象决定

    enumerate(iterable,start=0)生成带索引的枚举对象,返回的迭代类型为索引-值对(index-value),默认索引以零开始,也可以用start指定

numbers = [10086, 10000, 10010, 95588]
names = ["中国移动","中国联通","中国电信"]
for x in zip(range(1,10000),names,numbers):
    print(x)

for x in enumerate(names,start=200):
    print(x)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值