Python进阶2

1 迭代器(Iterator)

  • Iterable
>>> from collections import Iterable
>>> isinstance([1,2,3],Iterable)
True

总结:凡是可作用于 for 循环的对象都是 Iterable 类型;

  • Iterator
>>> a = [1,2,3,4,5]
>>> f = (x for x in a)
>>> f
<generator object <genexpr> at 0x021379C0>
>>> next(f)
4
>>> next(f)
5
>>> next(f)
6
>>> next(f)
7
>>> next(f)
8
>>> isinstance(f,collections.Iterator)
True

总结:凡是可作用于 next() 函数的对象都是 Iterator 类型,即迭代器

>>> a=[1,2,3]
>>> b=(1,2,3)
>>> c='abc'
>>> isinstance(a,Iterable)
True
>>> isinstance(b,Iterable)
True
>>> isinstance(c,Iterable)
True

总结: 集合数据类型如 list 、 dict 、 str 等是 Iterable 但不是 Iterator ,不过可以 通过 iter() 函数获得一个 Iterator 对象。 目的是在使用集合的时候,减少占用的内容。

>>> iter(a)
<list_iterator object at 0x02131330>
>>> f=iter(a)
>>> isinstance(f,collections.Iterator)
True

总结:生成器都是 Iterator 对象,但 list 、 dict 、 str 虽然是 Iterable ,却不是 Iterator 。
把 list 、 dict 、 str 等 Iterable 变成 Iterator 可以使用 iter() 函数。

2 多线程模拟

  • 模拟多任务(进程,线程,协程)实现方式之一:协程
def test1():
    while True:
        print("--1--")
        yield None
def test2():
    while True:
        print("--2--")
        yield None
t1 = test1()
t2 = test2()
while True:
    t1.__next__()
    t2.__next__()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 2.1 迭代器和可迭代对象 迭代器是指继承自Iterator,并实现了next方法的对象。使用迭代器的好处是节省内...
    Lemon_Home阅读 2,118评论 0 0
  • python学习笔记 声明:学习笔记主要是根据廖雪峰官方网站python学习学习的,另外根据自己平时的积累进行修正...
    renyangfar阅读 8,311评论 0 10
  • 1.1==,is的使用 ·is是比较两个引用是否指向了同一个对象(引用比较)。 ·==是比较两个对象是否相等。 1...
    TENG书阅读 4,079评论 0 0
  • Python 是一种相当高级的语言,通过 Python 解释器把符合语法的程序代码转换成 CPU 能够执行的机器码...
    Python程序媛阅读 5,974评论 0 3
  • 我平时玩游戏并不多,苹果手机因为是丐版16G的,手机中未装任何游戏,前段时间看到朋友玩贪吃蛇的游戏,她觉得挺好玩的...
    窦叽歪阅读 7,570评论 58 43

友情链接更多精彩内容