Python之 迭代器 列表解析器

回顾:

    1、动态语言

      sys.getrefcount()  对象被引用的次数。

      增加对象引用次数的场景:以赋值方式创建对象;对象作为某容器的元素时;被当做参数传递给函数时;为对象创建另外的变量名;

      减少引用计数:引用此对象的某变量名被显式销毁 del x ;给引用此对象的变量名重新赋值;从容器中移除对象,list.pop();容器本身被销毁;

完备和非完备遍历

Python迭代器

又称游标,是程序设计的软件设计模式,是一种可在容器物件上实现元素遍历的接口。是一种特殊的数据结构,在Python中,也是以对象存在的。

iterable 可迭代对象 :对象实现了__iter__方法;用户自定义的一些包含了__iter__()或者__getitem__方法的类;序列类型list、str、tuple。非序列类型 dict,file等      支持每次返回自己所包含的一个成员对象。

调用__iter__方法 就在内存中创建了一个迭代器,通过next方法遍历其元素,直到遍历结束。不会再从头开始。

iter()函数可以实现生产一个迭代器。

迭代器是遵循迭代协议的对象,for循环开始时,会通过迭代协议传递给iter()内置函数,从而能够从可迭代对象中获得一个迭代器,返回的对象含有需要的next()方法。

列表解析:是迭代机制的一种应用。用于基于已有的列表高效的实现新的列表。

[expression for iter_var in iterable(可迭代对象)]

l2 = [ i ** 2 for i in l1]

[expression for iter_var in iterable if cond_expr]  通过if判断符合条件的元素

原文地址:https://www.cnblogs.com/Beny-Bruce/p/5014703.html