迭代器和生成器

Posted hhsh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了迭代器和生成器相关的知识,希望对你有一定的参考价值。

# 迭代器的概念(优点:可遍历容器里的元素,省内存空间,随着循环生成)
# 迭代器协议 —— 内部含有__next__和__iter__方法的就是迭代器
# 只要含有__iter__方法的都是可迭代的 —— 可迭代协议
# 可迭代的.__iter__()方法就可以得到一个迭代器
# 迭代器中的__next__()方法可以一个一个的获取值
# from collections import Iterable
# from collections import Iterator
# print(isinstance([], Iterator))
# print(isinstance([].__iter__(), Iterator))
# print(isinstance([], Iterable))
#
#
# print(‘__iter__‘ in dir([].__iter__()))
# print(‘__iter__‘ in dir(123))           # False, int不可迭代
#
# # 只要含有__iter__方法的都是可迭代的 —— 可迭代协议
# l = [1,2,3,4]
# iterator = l.__iter__()
# print(iterator)
# print(iterator.__next__())
# print(iterator.__next__())


# for其实就在使用迭代器
#
# for i in range(10):                 # 等同于iter = range(10).__iter__()
#     print(i)                        # 循环执行print(iter.__next__())
# ----------------------------------------------------------------------------------------------------------------------------------------------
# #生成器就是一个迭代器,用yield,不能和return公用
# def generator():
#     print(1)
#     yield ‘a‘
# yield ‘b‘
# yield ‘c‘
# # g = generator() # 得到一个生成器作为返回值,实际上是迭代器 # print(g) # print(g.__next__()) # 在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。 # def feibo(max): # n, a, b = 0, 0, 1 # while n < max: # yield b # a, b = b, a + b # n += 1 # # l = [x for x in feibo(20)] # print(l)

 




以上是关于迭代器和生成器的主要内容,如果未能解决你的问题,请参考以下文章

python函数:迭代器和生成器

python函数:迭代器和生成器

迭代器和生成器函数

Python中迭代器和生成器的区别与联系

迭代器和生成器

python的生成器与迭代器和可迭代对象