Python学习笔记——迭代器

什么是迭代器:

  它为类序列对象提供了一个类序列的接口。它们是一组数据结构,你可以利用它们的索引从0开始一直“迭代”到序列的最后一个条目。



如何用迭代器:

  (1)序列中的使用

>>>myTuple = (1, 2, 3)
>>>i = iter(myTuple)
>>>i.next()
1
>>>i.next()
2
>>>i.next()
3
>>>i.next()
Traceback (most recent call last):
File "", line 6,  in <module>
    i.next()
StopIteration

  (2)字典中的使用

字典的迭代器会遍历它的键(key)。语句for eachKey in myDict.keys()可以缩写为for eachKey in myDict

>>>dict1={(‘Poe‘,‘author‘):(1809,1849,1976),
...(‘Gaudi‘,‘architect‘):(1852,1906,1987)}
>>>for eachdict in dict1:
...    print ‘Name: %s\tOccupation: %s‘ % eachdict
...    print ‘   Birth: %s\tDeath: %s\t Album: %s\n‘ ...    % dict1[eachdict]
Name: poe     Occupation:author
   Birth:1809 Death:1849      Album:1976

Name: Gaudi   Occupation:architect
   Birth:1852 Death:1906      Album:1987       

另外,Python还引进了三个新的内建字典方法来定义迭代:myDict.iterkeys()(通过键迭代),myDict.itervalues()(通过值迭代)及myDict.iteritems()(通过键-值对来迭代)。

  (3)文件中的使用

文件对象生成的迭代器会自动调用readline()方法。这样,循环就能访问文本文件的所有行。

>>>myFile = open(‘C:\\Users\\tyy\\Desktop\\xxx.txt‘)
>>>for eachLine in myFile:
           print eachLine,
aaaa
bbbb
cccc
>>>myFile.close()


3.如何创建迭代器

  对一个对象调用iter()就可以得到它的迭代器。它的语法如下:

iter(obj)

iter(func, sentinel)

如果你传递一个值给iter(),它会检查你传递的是不是一个序列,如果是,则根据索引从0一直迭代到序列结束。

如果你传递了两个值给iter(),它会重复地调用func,直到迭代器的下一个值等于sentinel。

时间: 2024-11-05 14:52:02

Python学习笔记——迭代器的相关文章

Python学习笔记——迭代器和生成器

1.手动遍历迭代器 使用next函数,并捕获StopIteration异常. def manual_iter(): with open('./test.py') as f: try: while True: line = next(f) print line except StopIteration: pass next函数也可以指定值来标记结尾 def manual_iter(): with open('./test.py') as f: try: while True: line = nex

Python学习笔记——迭代器(RandSeq和AnyIter)

1.RandSeq #coding:utf-8 #!/usr/bin/env python 'randSeq.py -- 迭代' #从random模块里仅仅导入choice方法 from random import choice class RandSeq(object): def __init__(self,seq): self.data = seq; def __iter__(self): return self; def next(self): return choice(self.dat

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python

雨痕 的《Python学习笔记》--附脑图(转)

原文:http://www.pythoner.com/148.html 近日,在某微博上看到有人推荐了 雨痕 的<Python学习笔记>,从github上下载下来看了下,确实很不错. 注意,这本学习笔记不适合Python新手学习. 从目录上看,并不能看出这本笔记有何特别之处,但看到里面的内容,感到非常惊喜.这本书更多的是关注一些底层的实现细节,以及更多的考虑性能方面(讲解内容很多会涉及到内存管理.缓存.垃圾回收.堆栈帧等方面的内容). 目前本笔记的最近更新时间为2013.03.30.大家可以到

【Python学习笔记之二】浅谈Python的yield用法

在上篇[Python学习笔记之一]Python关键字及其总结中我提到了yield,本篇文章我将会重点说明yield的用法 在介绍yield前有必要先说明下Python中的迭代器(iterator)和生成器(constructor). 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前

Python学习笔记----序列共性

序列操作符 作用seq[ind] 获得下标为ind 的元素seq[ind1:ind2] 获得下标从ind1 到ind2 间的元素集合seq * expr 序列重复expr 次seq1 + seq2 连接序列seq1 和seq2obj in seq 判断obj 元素是否包含在seq 中 obj not in seq 判断obj 元素是否不包含在seq 中 1.连接符(+):将一个序列和另外一个相同的序列做连接 这种方式连接序列不是最快的, 对于字符串来说,不如将所有字符串放在一个列表或者可迭代对象

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少