广告
返回顶部
首页 > 资讯 > 后端开发 > Python >关于Python迭代器的问题有哪些
  • 597
分享到

关于Python迭代器的问题有哪些

2023-06-16 04:06:18 597人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章主要讲解了“关于python迭代器的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“关于Python迭代器的问题有哪些”吧!第一个问题:什么是迭代器?迭代器,英文  

这篇文章主要讲解了“关于python迭代器的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“关于Python迭代器的问题有哪些”吧!

第一个问题:什么是迭代器?

迭代器,英文  Iterator,它首先是个对象,其次它是访问可迭代序列(Iterable)的一种方式。通常其从序列的第一个元素开始访问,直到所有的元素都被访问才结束。

迭代器又是一个特殊的对象,特殊在于它必须实现两个方法:__iter__和__next__.

第二个问题:为什么要有迭代器?

迭代器存在的一个最重要价值:节省内存,这在小数据量时无足轻重。

但是,当数据量大或者对程序要求性能高时,它的价值凸显。

第三个问题:迭代器怎么节省内存了?

只知道使用迭代器能节省内存,但却不知道怎么使用才能节省内存,下面就来回答这个问题。

首先创建一个list:

In [1]: a=[1,3,5,9,10]

其次,列表内每个元素+1,创建一个新列表

In [2]: a1 = [i+1 for i in a]

依次打印a1中每个元素:

In [8]: for i in a1:     ...:     print(i)

上面操作等价于:

a1 = [] for i in a:   a1.append(i+1) for i in a1:   print(i)

空间复杂度为 O(n),n为列表a内元素个数。

但是,使用迭代器实现上面的元素+1并打印的空间复杂度是多少呢?

ait = (i+1 for i in a) # 得到生成器,也是一种特殊的迭代器 for i in ait:   print(i)

上面操作等价于:

for i in a:   print(i+1)

不需要额外空间,所以使用迭代器加1并打印的空间复杂度为O(1).

结论:迭代器更加节省空间!

第四个问题:如何自定义一个迭代器?

上面说过,迭代器对象必须要实现两个方法,为了更加具体,我们演示如何自定义一个迭代器。

自定义一个迭代器,实现斐波那契数列:

#斐波那契数列 class Fabs():     def __init__(self,max):         self.max=max         self.n,self.a,self.b=0,0,1          #定义__iter__方法     def __iter__(self):         return self              #定义__next__方法     def __next__(self):         if self.n<self.max:             tmp=self.b             self.a,selfself.b=self.b,self.a+self.b             self.n+=1             return tmp         raise StopIteration

使用这个迭代器,打印斐波那契数列前10项:

In [13]: for item in Fabs(10):      ...:     print(item,end=' ')                                                                     1 1 2 3 5 8 13 21 34 55

第五个问题:迭代器使用有哪些注意事项?

迭代器只能前进不能回退!

也就是说一旦迭代结束,要想再使用此迭代器对象从头开始遍历元素,将是不可行的!

In [14]: a=iter([1,4,5])   In [16]: next(a)                                                                 Out[16]: 1  In [17]: next(a)                                                                 Out[17]: 4  In [18]: next(a)                                                                 Out[18]: 5  # 要想再使用此迭代器对象从头开始遍历元素,将是不可行的! In [19]: next(a)                                            # 抛出异常:StopIteration:

使用内置函数iter,可将Iterable序列转化为迭代器。

感谢各位的阅读,以上就是“关于Python迭代器的问题有哪些”的内容了,经过本文的学习后,相信大家对关于Python迭代器的问题有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 关于Python迭代器的问题有哪些

本文链接: https://www.lsjlt.com/news/282349.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 关于Python迭代器的问题有哪些
    这篇文章主要讲解了“关于Python迭代器的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“关于Python迭代器的问题有哪些”吧!第一个问题:什么是迭代器迭代器,英文  ...
    99+
    2023-06-16
  • 关于Python的面试问答题有哪些
    这篇文章主要介绍“关于Python的面试问答题有哪些”,在日常操作中,相信很多人在关于Python的面试问答题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”关于Python的面试问答题有哪些”的疑惑有所...
    99+
    2023-06-16
  • 关于Dubbo的问题有哪些
    这篇文章主要讲解了“关于Dubbo的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“关于Dubbo的问题有哪些”吧!1、RPC1.1 RPC 定义互...
    99+
    2022-10-19
  • 关于Spring的问题有哪些
    这篇文章主要讲解了“关于Spring的问题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“关于Spring的问题有哪些”吧!1 Spring核心组件一句...
    99+
    2022-10-19
  • Python关于面向对象的问题有哪些
    这篇“Python关于面向对象的问题有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Python关于面向对象的问题有哪些...
    99+
    2023-07-06
  • Qt 关于容器的遍历迭代器的使用问题小结
    目录前言:STL风格迭代器:foreach关键字:其他:前言: Qt(官方发音 [kju:t],音同 cute)是一个跨平台的 C++ 开发库,主要用来开发图形用户界面(Graphi...
    99+
    2022-11-13
  • 关于Ubuntu 18.04的常见问题有哪些
    关于Ubuntu 18.04的常见问题有哪些,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Ubuntu 18.04 版本 已经到来。我可以在各种 Faceboo...
    99+
    2023-06-16
  • 关于Java序列化的问题有哪些
    本篇内容主要讲解“关于Java序列化的问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于Java序列化的问题有哪些”吧!问题一:什么是 Java 序列化?序列化是把对象改成可以存到磁盘...
    99+
    2023-06-02
  • 关于租用美国服务器的问题有哪些
    关于租用美国服务器的问题有:1、什么是美国服务器租用;2、美国服务器租用是意味着拥有服务器吗;3、美国服务器和美国云服务器有什么不同;4、寻找最佳美国服务器的方法是什么。具体内容如下:一、美国服务器租用到底是什么美国服务器租用是一种Inte...
    99+
    2022-10-20
  • python中有哪些迭代器函数
    这期内容当中小编将会给大家带来有关python中有哪些迭代器函数,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬...
    99+
    2023-06-14
  • Python中有哪些迭代器方法
    Python中有哪些迭代器方法?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Python...
    99+
    2023-06-14
  • 关于云服务器的升级配置问题有哪些
    云服务器是一种虚拟化服务器,其配置可能因服务器类型、配置文件、操作系统、配置方式等不同而存在差异。下面是一些有关云服务器升级配置的一般建议: 查看当前系统配置:首先,可以检查云服务器是否支持您当前使用的操作系统和软件。例如,您可能想查看...
    99+
    2023-10-27
    服务器 有哪些 于云
  • 关于SonarQube社区版使用问题有哪些
    本篇内容主要讲解“关于SonarQube社区版使用问题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于SonarQube社区版使用问题有哪些”吧!&nb...
    99+
    2022-10-19
  • 关于云服务器的升级配置问题有哪些呢
    容量限制:您可能会遇到云服务器的容量限制问题,例如当您只使用一小部分云服务器资源时。您可以考虑增加服务器的存储容量或者使用分布式存储,以满足不同用户的需求。 故障转移:如果您的云服务器出现故障,您可以选择将数据备份到另一台云服务器或在线恢...
    99+
    2023-10-27
    服务器 有哪些 于云
  • 面试中常见的关于Git的问题有哪些?
    在软件开发行业中,Git已经成为了最常用的版本控制工具之一。因此,在面试过程中,面试官经常会问一些关于Git的问题,以确保应聘者对这个工具有足够的了解。下面我们来看看面试中常见的关于Git的问题有哪些。 Git的基本原理是什么? Git...
    99+
    2023-08-18
    数据类型 面试 git
  • python中迭代器的应用场景有哪些
    本篇文章为大家展示了python中迭代器的应用场景有哪些,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pi...
    99+
    2023-06-14
  • 关于this的面试题有哪些
    这篇文章给大家介绍关于this的面试题有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。问题1:变量 vs 属性下面的打印结果是啥:const object =&...
    99+
    2022-10-19
  • 有哪些关于this的面试题
    这篇文章主要讲解了“有哪些关于this的面试题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些关于this的面试题”吧!注意:下面的 JavaScrip...
    99+
    2022-10-19
  • 关于Tomcat的面试题有哪些
    本篇内容主要讲解“关于Tomcat的面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“关于Tomcat的面试题有哪些”吧!一、什么是TomcatTomc...
    99+
    2022-10-19
  • MySQL关于事务常见的问题都有哪些呢
    这期内容当中小编将会给大家带来有关MySQL关于事务常见的问题都有哪些呢,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。所谓事务,是指一组相互依赖的操作单位的集合,用来保证...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作