Python3入门(六)迭代器和生成器
本文介绍如何在python中使用迭代器和生成器
一、迭代器
迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。字符串,列表或元组对象都可用于创建迭代器
示例:
list1 = ["a", "b", "c"] # 创建迭代器对象 ll = iter(list1) # 输出下一个元素 print(next(ll)) # 输出:a
1、创建一个迭代器
把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为 __init__(),
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
关于日志打印以及Spring事务控制的日常坑坑洼洼
最近在重新整理老系统的业务,基于老平台开发新的业务。看到一段关于财务退款的处理,很开心,这不就是我一直在找的核心处理模块吗。看一下出入参以及大致逻辑,决定复用。三下除以两下,调用业务,打印日志,OK,测试。然而,测试一跑,便是相当尴尬,而且越跑越尴[/强颜欢笑] 先是日志一段刷没有看到异常堆栈,退款单据也成功了,但是快递费用没有退,即退款明细没处理完,单据成功了。WTF,这不是事务没回滚吗,可是没异常呀,是不是异常被吃掉(捕捉)或者被什么条件过滤掉了。review了一下代码,发现:增强for循环里面更新集合数据,那么该出场的 java.util.ConcurrentModificationException堆栈呢?捕捉异常看了一下,是:e.getMessage()......诶,grep搜索一下日志,真心有一行日志是这个异常,但是不好发现,日志的打印还需要规范引发思考...... 一、关于Exception日志打印心得,总结记录收集一下:(1)打印日志堆栈要清晰:打印日志要打印出异常堆栈,尽量避免e.getMessage()打印,业务可处理异常除外。(2)注意吃掉异常事务不会滚:异常导...
- 下一篇
LeetCode 118:杨辉三角 II Pascal's Triangle II
公众号:爱写bug(ID:icodebugs)作者:爱写bug 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。 Given a non-negative index k where k ≤ 33, return the kth index row of the Pascal's triangle. Note that the row index starts from 0. 在杨辉三角中,每个数是它左上方和右上方的数的和。 In Pascal's triangle, each number is the sum of the two numbers directly above it. 示例: 输入: 3 输出: [1,3,3,1] 进阶: 你可以优化你的算法到 O(k) 空间复杂度吗? 解题思路: 和之前写的那篇118号杨辉三角基本类似。这道题只是不用考虑每行输出,只输出最后一行。这样只在一个数组上修改即可:该数 的值 = 该数的值+该数左边的值之和(该数不包括第一个和最后一个数)。 这道题只是不用考虑每一行输出,只输出最后一行。这样只在一个数组上修改即可:该数...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境