Python 数据科学指南1.8 使用迭代器

一、准备工作

Python中的迭代器实现了一种迭代器模式,它让我们可以一个接一个地处理一个序列,但不需要真正实现整个序列。

二、代码示例——简单计数器

#1.写一个简单的迭代器
#定义了一个名为SimpleCount的类,构造函数_init_有两个参数:起始和结束,来定义序列的开始和结束。
#请注意_iter_和next这两个方法,在Python中想要成为一个迭代器的对象必须都支持这两个函数。
#_iter_返回整个类对象作为一个迭代器对象,next方法返回迭代器里的下一个值。
class SimpleCount(object):
	"""docstring for ClassName"""
	def __init__(self, start,end):
		self.current = start
		self.end = end
	def _iter_():
		'Return itself as an iterator object'
		return self
	def next(self):
		'Return the next value till current is lower than end'
		if self.current > self.end :
			raise StopIteration
		else:
			self.current += 1
			return self.current -1

		

#2.现在来访问这个迭代器
#使用next()函数访问迭代器中的连续函数。
c=SimpleCount(1,3)
print (c.next())
print (c.next())
print (c.next())
print (c.next())

#3.另外一种访问方式
#iter()函数,它能用来在循环体中循环访问元素,它在内部实现中使用了next函数。
#注意:一个迭代器对象只能被使用一次,再次使用会抛出 StopInteration异常,iter()函数会处理这个异常,当数据访问完成的时候退出循环。
for entry in iter(c):
	print (entry)

1

2

3

Traceback (most recent call last):

  File "ex1.py", line 29, in <module>

    print (c.next())

  File "ex1.py", line 16, in next

    raise StopIteration

StopIteration #这是采用iter()函数,二次访问迭代器对象时报错。

三、更多内容

#在Python中,一个文件就是对象就是一个迭代器,它支持iter()和next()函数。因此,我们每次只处理一行数据,而不是将全部文件加载到内存中。
#迭代器给了你自由,你可以让你的应用程序自己定义访问你的数据源的方式
#open中给定文件名的字符串格式,最好采用相对路径。
f = open('ex1.py')
for l in iter(f):
	print (l)
f.close()

猜你喜欢

转载自blog.csdn.net/cjx_cqupt/article/details/88218782