class Fib:'''迭代器例子'''def __init__(self, vmax):self.max = vmaxdef __iter__(self):self.a = 0self.b = 1return selfdef __next__(self):fib = self.aif fib > self.max:raise StopIterationself.a, self.b = self.b, self.a + self.breturn fib

  类实例创建后,__init__() 方法被立即调用。很容易将其——但技术上来说不正确——称为该类的“构造函数” 。 很容易,因为它看起来很像 C++ 的构造函数(按约定,__init__() 是类中第一个被定义的方法),行为一致(是类的新实例中第一片被执行的代码), 看起来完全一样。 错了, 因为__init__() 方法调用时,对象已经创建了,你已经有了一个合法类对象的引用。

每个方法的第一个参数,包括 __init__() 方法,永远指向当前的类对象。 习惯上,该参数叫 self。 该参数和c++或Java中 this 角色一样, 但 self 不是 Python的保留字, 仅仅是个命名习惯。 虽然如此,请不要取别的名字,只用 self; 这是一个很强的命名习惯。

在 __init__() 方法中, self 指向新创建的对象; 在其他类对象中, 它指向方法所属的实例。尽管需在定义方法时显式指定self ,调用方法时并  必须明确指定。 Python 会自动添加。

迭代器工具库

import itertoolsnames = list(open('favorite-people.txt', encoding='gb2312'))
print(names)
names = [name.rstrip() for name in names]
print(names)
names = sorted(names)
print(names)
names = sorted(names, key=len)
print(names)groups = itertools.groupby(names, len)
print(list(groups))
#调用list() 函数会“耗尽”这个迭代器,
#也就是说 你生成了迭代器中所有元素才创造了这个列表。
#迭代器没有“重置”按钮。你一旦耗尽了它,你没法重新开始。
#如果你想要再循环一次(例如, 在接下去的for循环里面),
#s你得调用itertools.groupby()来创建一个新的迭代器。
groups = itertools.groupby(names, len)
for name_length, name_iter in groups:print('Names with {0:d} letters:'.format(name_length))for name in name_iter:print(name)def mydef(name):return name[0]groups = itertools.groupby(names, mydef)
for name_length, name_iter in groups:print('Names with {0:s} letters:'.format(name_length))for name in name_iter:print(name)

  

>>> list(range(0, 3))
[0, 1, 2]
>>> list(range(10, 13))
[10, 11, 12]
>>> list(itertools.chain(range(0, 3), range(10, 13)))
[0, 1, 2, 10, 11, 12]
>>> list(zip(range(0, 3), range(10, 13)))
[(0, 10), (1, 11), (2, 12)]
>>> list(zip(range(0, 3), range(10, 14)))
[(0, 10), (1, 11), (2, 12)]
>>> list(itertools.zip_longest(range(0, 3), range(10, 14)))
[(0, 10), (1, 11), (2, 12), (None, 13)]

  

转载于:https://www.cnblogs.com/joyber/p/4344100.html

【Python学习日记】迭代器相关推荐

  1. 菜菜的Python学习日记 | 正则表达式你必须了解的知识点

    系列索引:菜菜的Python学习日记 | Python从入门到入土详解 文章目录 常用规则 Python对正则表达式的支持 常用规则 符号 解释 示例 说明 . 匹配任意字符 b.t 可以匹配bat ...

  2. Python学习日记-day1基础篇 字符 输出 注释

    Python学习日记-day1基础篇 字符 输出 注释 by北栀一刺 # -*- coding: utf-8 -*- """ Spyder EditorThis is a ...

  3. python学习日记(第一周)

    python学习日记(第一周) 前言: 无论出于什么目的,学个程序语言吧.之前学过一点点基础语法,然后就搁置了两年,日记仅作为个人记录,有问题还望不吝赐教 其实这玩意儿应该每次学一部分记录一部分的,好 ...

  4. Python学习日记-pandas操作学习

    Python学习日记-pandas模块学习 根据需求筛选数据 绘制柱状图-利用pandas绘制 绘制柱状图-利用matplotlib绘制 绘制柱状图-两组数据比较 绘制柱状图-叠加柱状图 绘制饼状图 ...

  5. 菜菜的Python学习日记 | Python类实验代码分享

    系列索引:菜菜的Python学习日记 | Python从入门到入土详解 Python类实验代码分享 编写程序,实现以下功能. (1)创建员工类Employee,属性有姓名name.能力值ability ...

  6. python学习日记2-3周

    python学习日记2-3周 怠惰怠惰 improt 导入 import phone.apple.iphone6 import phone.apple.iphone7 import phone.sam ...

  7. Python学习日记——罗马数字转整数

    Python学习日记004--罗马数字转整数 题目来源:LeetCode题库--罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 ...

  8. [Python学习日记] 文件与文件系统(一)

    [Python学习日记] 文件与文件系统(一) 目录 Python3 File(文件) 方法 open() 方法 file 对象 目录 Python3 File(文件) 方法 open() 方法 Py ...

  9. Python学习:迭代器与生成器

    1.生成器 如果创建一个有很多元素的列表,但是只需要访问前几个元素,后面的元素占着的空间就白白浪费了 在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间. 在Pyt ...

  10. Python学习日记:求解由四个数字组成的四位数个数

    看见这个问题时,我们很容易想到我们学习过的排列组合知识点:显然用四个数字组成四位数(这些四位数互不相同)就是一个关于排列的问题:用数学的方法可以知道.那么怎么用Python运行解决呢?这就是本次学习日 ...

最新文章

  1. BGR图像与HSV图像互相转换(opencv)
  2. vault-使用kubernetes作为认证后端
  3. JavaScript中数组的增删改查以及应用方式
  4. Winform中跨窗体设置ZedGraph的属性并刷新曲线图
  5. MySQL数据库的datetime与timestamp
  6. Java—Remove Deplicates from Sorted Array(顺序数组中去重位置)
  7. Meta http-equiv 大全
  8. tt c mysql t4 bll_通过T4模板实现代码自动生成
  9. 《SaaS架构设计》新书SD会议首发签售
  10. iOS开发之理解iOS中的MVC设计模式
  11. Jquery 中 ajaxSubmit使用笔记
  12. 蓝牙sbc怎么解决_你不知道蓝牙耳机术语,看懂了才明白哪些是优质蓝牙耳机
  13. 相关系数、相关指数和回归系数等概念含义
  14. 点击图标分享页面到QQ,微信,微博 等
  15. 大规模服务设计部署经验
  16. linux dd 备份uboot,刷机前如何备份uboot、分区、编程器固件?路由器刷机备份命令使用方法...
  17. 内网穿透 natApp
  18. 【大话Java面试】-如何通俗易懂的理解Redis的回收算法LRU?
  19. ZedBoard的初步学习-通信设置
  20. (带手机版数据同步)新闻博客类网站源码 新闻文章资讯博客网站织梦模板

热门文章

  1. Transformer预训练模型已经变革NLP领域,一文概览当前现状
  2. 【模型压缩】Only Train Once:微软、浙大等研究者提出剪枝框架OTO,无需微调即可获得轻量级架构...
  3. 他曾经复读才考上三本,如今让华为开出 201 万年薪(其实还拒绝了 360 万 offer)...
  4. 读《scikiit-learn机器学习》支持向量机
  5. 超详细Hexo+Github博客搭建小白教程
  6. poj3614(Sunscreen)优先队列+贪心
  7. python基础9-常见难点
  8. 吴恩达深度学习——目标检测
  9. Java网络编程之客户端中的Socket
  10. GTUG的推荐给大家的一本书