python generator iterator和iterable object

1 iterable object

list、dict、set、tuple、file(在每行上iterate)等都是iterable object,但是它们不是iterator。但是它们可以转换成iterator,通过两种方式:

第一,显式的使用iter()函数;

第二,隐式的使用for

2 iterator

iterator也是iterable的。

3 generator

3.1 种类

有两种类型的generators

3.2 使用yield来返回的函数形式的generator

使用yield返回函数值的函数是generator,generator是一种特殊的iterator,因此以iterator作为参数的函数都可以使用generator。

3.3 使用generator comprehension形式的generator

即圆括号形式的generator comprehension本质是一个generator。

总结一下,

三者的关系如下:

generator是iterator,iterator是iterable object,所以,最大的是iterable object。

时间: 2024-10-09 23:17:08

python generator iterator和iterable object的相关文章

Python 中 Iterator和Iterable的区别

(转载:http://blog.csdn.net/passionkk/article/details/49929887) Python中 list,truple,str,dict这些都可以被迭代,但他们并不是迭代器.为什么? 因为和迭代器相比有一个很大的不同,list/truple/map/dict这些数据的大小是确定的,也就是说有多少事可知的.但迭代器不是,迭代器不知道要执行多少次,所以可以理解为不知道有多少个元素,每调用一次next(),就会往下走一步,是惰性的. 判断是不是可以迭代,用It

python -- decorator && generator && iterator

python -- decorator && generator && iterator 一. decorator 1. 2. 二. generator 三. iterator 原文地址:https://www.cnblogs.com/-cjzsr-/p/8167923.html

大杂烩 -- Iterator 和 Iterable 区别和联系

基础大杂烩 -- 目录 用Iterator模式实现遍历集合  Iterator模式是用于遍历集合类的标准访问方法.它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构. 例如,如果没有使用Iterator,遍历一个数组的方法是使用索引: for(int i=0; i<array.size(); i++) { ... get(i) ... } 而访问一个链表(LinkedList)又必须使用while循环: while((e=e.next())!=null) { ...

Iterator 和 Iterable 差别和联系

用Iterator模式实现遍历集合  Iterator模式是用于遍历集合类的标准訪问方法.它能够把訪问逻辑从不同类型的集合类中抽象出来,从而避免向client暴露集合的内部结构. 比如,假设没有使用Iterator,遍历一个数组的方法是使用索引: for(int i=0; i<array.size(); i++) { ... get(i) ... } 而訪问一个链表(LinkedList)又必须使用while循环: while((e=e.next())!=null) { ... e.data()

Iterator 和 Iterable 区别和联系

用Iterator模式实现遍历集合  Iterator模式是用于遍历集合类的标准访问方法.它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构. 例如,如果没有使用Iterator,遍历一个数组的方法是使用索引: for(int i=0; i<array.size(); i++) { ... get(i) ... } 而访问一个链表(LinkedList)又必须使用while循环: while((e=e.next())!=null) { ... e.data() ..

Python迭代器(Iterator)

概述 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 延迟计算或惰性求值 (Lazy evaluation) 迭代器不要求你事先准备好整个迭代过程中所有的元素.仅仅是在迭代至某个元素时才计算该元素,而在这之前或之后,元素可以不存在或者被销毁.这个特点使得它特别适合用于遍历一些巨大的或是无限的集合. 可迭代对象 迭代器提供了一个统一的访问集合的接口.只要是实现了__iter__()或__getitem__()方法的对象,就

Map生成器 map适配器现在可以使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象

Map生成器 map适配器现在可以使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象 package org.rui.collection2.map; /** * map生成器 * @author lenovo * */ public class Pair<K,V> { public final K key; public final V value; public Pair(K k,V v) { this.key=k; this.value=v; } }

Map生成器 map适配器如今能够使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象

Map生成器 map适配器如今能够使用各种不同的Generator,iterator和常量值的组合来填充Map初始化对象 package org.rui.collection2.map; /** * map生成器 * @author lenovo * */ public class Pair<K,V> { public final K key; public final V value; public Pair(K k,V v) { this.key=k; this.value=v; } }

iterator与iterable

用Iterator模式实现遍历集合Iterator模式是用于遍历集合类的标准访问方法.它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构.例如,如果没有使用Iterator,遍历一个数组的方法是使用索引:for(int i=0; i<array.size(); i++) { ... get(i) ... } 而访问一个链表(LinkedList)又必须使用while循环:while((e=e.next())!=null) { ... e.data() ... } 以