python---迭代器生成器

什么是迭代器

迭代器是一种支持next()操作的对象,它包含了一组元素,当执行next()操作时,返回其中一个元素。

当所有元素都被返回后,再执行next()报异常---StopIteration

#coding:utf-8
"""
迭代器:对象包含__iter__方法就是一个迭代器
特点:惰性使用,用完即焚,节省内存空间
"""
"""
创建迭代器:iter
格式:迭代器对象 = iter(可迭代对象)
"""
list_iter = iter([1,2,3,4,5,6])
#如果迭代对象为字典,生成迭代器获取字典的键
#通过next(迭代器对象)函数获取下一个元素,如果没有元素抛出异常
print(next(list_iter))

"""生成器:函数中使用yield 关键字生成值就是一个生成器
   特点:有暂停执行功能,节省内存空间
"""
def 函数():
    yield '值' #函数中使用yield 关键字生成器函数
#案例;用生成器来实现计数功能
def counter(start = 1):
    count = start
    while True:
        yield count  #当执行yield
        count += 1   #count 递增 1
#创建生成器
count = counter() #创建对象
print(next(count))

迭代器遍历

#coding:utf-8
L = [1,2,3,4]
I = iter(L) #迭代器对象
while True:
    try:
        item = next(I)
        print(item)
    except StopIteration:
        break

生成器

生成器的yield

#coding:utf-8
"""
定义生成器,来创建生成器
(1)生成器函数中使用yield关键字来生成值
(2)调用生成器函数,就返回一个生成器
(3)每对生成器调用一次next函数,就会返回一次yield后面的值
"""
def nums_gen():
    for i in range(1,11):
        yield i

nums = nums_gen() #调用生成器函数,返回一个生成器nums
print(type(nums))
print(next(nums),next(nums),next(nums))
for n in nums:
    print(n, end=" ")

生成器斐波那契数列

#coding:utf-8
"""
生成器的斐波那契数列
定义一个斐波那契数列的生成器1,1,2,3,5,8
"""
def fibonacci(n):
    prev,curr = 0,1
    for _ in range(n):
        yield curr
        prev,curr = curr,prev + curr
fibs = fibonacci(20)
print(fibs)
print(next(fibs),next(fibs),next(fibs),next(fibs))
for item in  fibs:
    print(item,end=" ")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值