美文网首页
容器 & 可迭代对象 & 迭代器 & 生成器

容器 & 可迭代对象 & 迭代器 & 生成器

作者: 光明_7c13 | 来源:发表于2019-09-25 19:24 被阅读0次

    容器

    通常这类数据结构把所有的元素存储在内存中(也有一些特例,并不是所有的元素都放在内存,比如迭代器和生成器对象)
    常见的容器:

    • list, deque, ....
    • set, frozensets, ....
    • dict, defaultdict, OrderedDict, Counter, ....
    • tuple, namedtuple, …
    • str

    容器是一系列元素的集合,str、list、set、dict、file对象都可以看作是容器,容器都可以被迭代(用在for,while等语句中),因此他们被称为可迭代对象。

    可迭代对象

    迭代器有一种具体的迭代器类型,比如list_iterator,set_iterator。可迭代对象实现了iter方法,并且该方法会返回一个迭代器对象

    In [2]: import dis In [3]: li = [1,2,3] In [9]: dis.dis('for i in li:print(i)') 1 0 SETUP_LOOP 20 (to 22) 2 LOAD_NAME 0 (li) 4 GET_ITER >> 6 FOR_ITER 12 (to 20) 8 STORE_NAME 1 (i) 10 LOAD_NAME 2 (print) 12 LOAD_NAME 1 (i) 14 CALL_FUNCTION 1 16 POP_TOP 18 JUMP_ABSOLUTE 6 >> 20 POP_BLOCK >> 22 LOAD_CONST 0 (None) 24 RETURN_VALUE
    

    迭代器

    任何实现了__iter____next__()方法的对象都是迭代器,__iter__返回迭代器自身,__next__返回容器中的下一个值,如果容器中没有更多元素了,则抛出StopIteration异常。

    相关文章

      网友评论

          本文标题:容器 & 可迭代对象 & 迭代器 & 生成器

          本文链接:https://www.haomeiwen.com/subject/bttmyctx.html