1.软文推荐

2.软文推荐

3.软文推荐

什么是迭代?迭代是指按需一次获取一个数据。是否可以迭代,可以通过是否可以使用for循环取值来进行简单的判断。更准确的判断是使用iter()函数,这是一个Python内置函数。

可迭代的对象

iter()函数的作用如下:

如果对象实现了iter方法,那么就调用它,获取一个迭代器。比如:

def __iter__(self):

return SentenceIterator(self.words)

如果对象没有实现iter但是实现了getitem方法,那么就创建一个迭代器,尝试从索引0开始获取元素。

如果尝试获取元素失败,就会抛出TypeError异常。

可迭代的对象,就是使用iter()函数判断,满足前面2点的对象。

任何Python序列都是可以迭代的,因为它们都实现了getitem方法。

迭代器

从前面iter()函数的作用可以发现,迭代器是从可迭代的对象中获取的。

如果对象本身是可迭代的,就调用iter方法获取一个迭代器。

如果对象不可迭代但是实现了getitem方法,那么就会创建一个迭代器。

比如可以使用iter()函数把列表转换为迭代器:

>>> test_list = [1, 2, 3]
>>> print(type(test_list))
'list'>

>>> test_iter = iter(test_list)
>>> print(type(test_iter))
'list_iterator'>

迭代器可以使用for循环遍历:

for x in test_iter:

print(x)

也可以使用while循环遍历:

while True:

try:

print(next(test_iter))

except StopIteration:

del test_iter

break
next()函数用于获取迭代器下一个元素。
没有元素了,迭代器会抛出StopIteration异常。

标准的迭代器接口有两个方法:

next返回下一个元素。
iter返回self,以便在应该使用可迭代对象的地方使用迭代器,比如for循环中。
def __iter__(self):

return self

迭代器的准确定义是:迭代器是这样的对象,它实现了无参数的next方法,返回序列中的下一个元素;如果没有元素了,那么抛出StopIteration异常。Python中的迭代器还实现了iter方法,因此迭代器也是可以迭代的。

最后,通过对比可以发现,可迭代对象的iter返回的是迭代器:

def __iter__(self):

return SentenceIterator(self.words)

迭代器的iter返回的是self:

class SentenceIterator:

def __iter__(self):

return self

而且迭代器还需要有next方法。

从这一点就能清楚看出它们的区别了。

需要特别注意的是,可迭代的对象一定不能是自身的迭代器,也就是说,可迭代对象必须实现iter方法,但是不能实现next方法。否则会让设计模式变得混乱不堪。

本文来源:www.lxlinux.net/9642.html,若引用不当,请联系修改。

相关文章 8

1

美国服务器租用免备案(美国主机服务器租用) 1分钟前

目录:1、美国主机适合做电商网站吗?2、请问免备案服务器租用哪里的好?为何?3、海外服务器主机租用需要注意的方面有哪些?4、租用...

2

如何使用第三方源安装Xen 4分钟前

如何使用第三方软件源安装Xen?Xen 是一个基于开源软件组织的虚拟机监控器(即 Virtual Machine Monitor 简称 VMM),可以允许在单一的物理机器上同...

3

吉林vps高防御虚拟主机(高防云服务器 高防vps 高防主机 群) 5分钟前

目录:1、VPS和虚拟主机的区别2、vps,虚拟主机,云主机是什么?三种有什么区别??3、VPS和虚拟主机的区别是什么?4、VPS虚拟主机的问题...

4

Linux下安装PHP的PDO 7分钟前

PDO(PHP Data Objects)是一种在PHP里连接数据库的使用接口。PDO与mysqli曾经被建议用来取代原本PHP在用的mysql相关函数,基于数据库使用的安全...

5

详解Linux expect使用方法 9分钟前

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信,本篇文章为大家详细讲...

6

seo优化工具怎么用(seo免费优化工具) 12分钟前

目录:1、网站seo该怎么优化?有哪些方法呢?2、SEO优化怎么做3、seo优化怎么做?4、如何进行SEO优化?5、SEO优化怎么做?6、seo怎么优化 ...

7

Linux zcat命令详解 13分钟前

zcat 命令用于显示压缩包中文件的内容,可以使用 gzip -d 或 gunzip 或 zcat 将压缩文件恢复为原始格式,下面良许教程网为大家分享一下Linux ...

8

Linux中使用uwgsi部署Python服务 16分钟前

uWSGI 是一个快速的、纯C语言开发的、自维护的、对开发者友好的 WSGI 服务器 ,旨在提供专业的 Python web应用发布和开发,下面为大家讲解一...