day0315 迭代器
一. 迭代器
1.什么是可迭代器?
除了数字和布尔值之外,其他数据类型都是可迭代对象。(字符串,列表,元组,字典,集合)
2.可迭代协议
2.1 可以被迭代要满足的要求就叫可迭代协议,可迭代的定义非常简单,就是内部实现__iter__.
2.2 迭代器遵循迭代器协议:必须要有__iter__方法和__next__.
2.3 for 循环,能循环一个可迭代对象步骤:将可迭代对象转化成迭代器。内部使用__next__方法,一个一个取值,加了异常处理功能,能取值到底后自动停止。
2.4 a=对象.__iter__(创建一个迭代器)
l={'k1':1,'k2':[11,33,'Ada'],'k3':'Tro','k4':('k1','k2')}
a=l.__iter__() #创建一个迭代器。
print(a.__next__()) #一行一行的取值。
print(a.__next__())
print(a.__next__())
print(a.__next__())
结果:
k1
k2
k3
k4
#字典的迭代器生成的是键。
注意:迭代器的特性:1.惰性机制。2.不能从下往上走。3.一次性的,用完就没了。
l=[1,2,3,4,'try',6,['kiss','you','godbye'],9,8]
a=l.__iter__()
while True:
try:
print(a.__next__())
except StopIteration:
break
结果:
1
2
3
4
try
6
['kiss', 'you', 'godbye']
9
8
day0315 迭代器的更多相关文章
- 匹夫细说C#:庖丁解牛迭代器,那些藏在幕后的秘密
0x00 前言 在匹夫的上一篇文章<匹夫细说C#:不是“栈类型”的值类型,从生命周期聊存储位置>的最后,匹夫以总结和后记的方式涉及到一部分迭代器的知识.但是觉得还是不够过瘾,很多需要说清楚 ...
- 轻量级“集合”迭代器-Generator
Generator是PHP 5.5加入的新语言特性.但是,它似乎并没有被很多PHP开发者广泛采用.因此,在我们了解PHP 7对Generator的改进之前,我们先通过一个简单却显而易见的例子来了解下G ...
- C#设计模式-迭代器模式
一. 迭代器(Iterator)模式 迭代器是针对集合对象而生的,对于集合对象而言,必然涉及到集合元素的添加删除操作,同时也肯定支持遍历集合元素的操作,我们此时可以把遍历操作也放在集合对象中,但这样的 ...
- 设计模式(十):从电影院中认识"迭代器模式"(Iterator Pattern)
上篇博客我们从醋溜土豆丝与清炒苦瓜中认识了“模板方法模式”,那么在今天这篇博客中我们要从电影院中来认识"迭代器模式"(Iterator Pattern).“迭代器模式”顾名思义就是 ...
- Python(四)装饰器、迭代器&生成器、re正则表达式、字符串格式化
本章内容: 装饰器 迭代器 & 生成器 re 正则表达式 字符串格式化 装饰器 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志.性能测试.事务处理等.装饰器是解 ...
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...
- Java迭代器
迭代器在其实就是指针,读取集合或者数组中的一个值,读完以后又指向下一条数据. iterator() 迭代器只读,不能改效率要比for循环高 迭代器的一些方法: HasNext() 如果仍有元素可以迭代 ...
- Python 生成器与迭代器 yield 案例分析
前几天刚开始看 Python ,后因为项目突然到来,导致Python的学习搁置了几天.然后今天看回Python 发现 Yield 这个忽然想不起是干嘛用的了(所以,好记性不如烂笔头.).然后只能 花点 ...
- 设计模式02迭代器(java)
先贴代码,有空来写内容. 1.定义集合 import java.util.List; import java.util.ArrayList; //coollection是我自己定义的一个集合,因为要写 ...
随机推荐
- JPA+Hibernate 3.3 ——基本属性映射
1.数据库中字段的数据类型为longtext 存放二进制文本的注解方式 private byte[] file; //设置延迟初始化 @Lob @Basic(fetch=FetchType.LA ...
- 超级NB的防DDOS(小量级)攻击的脚本
# tree /usr/local/ddos/ /usr/local/ddos/ ├── ddos.conf ├── ddos.sh ├── ignore.ip.list └── LICENSE di ...
- Python爬取金山词霸每日一句,存储到MySQL中
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/7/3 20:25 # @Author : baoshan # @Site : ...
- C#中怎么判断一个数组中是否存在某个数组值
(1) 第一种方法: ,,}; ); // 这里的1就是你要查找的值 ) // 不存在 else // 存在 (2) 第二种方法: string[] strArr = {"a",& ...
- LeetCode: Best Time to Buy and Sell Stock III 解题报告
Best Time to Buy and Sell Stock IIIQuestion SolutionSay you have an array for which the ith element ...
- openssl实现CA自签证书和颁发数字证书
1. 测试环境准备: CA签署服务器:192.168.2.181 WEB服务器:192.168.2.180 CA安装openssl WEB服务器使用nginx 2. CA生成自签证书: 2.1 为C ...
- 【iCore1S 双核心板_FPGA】例程九:锁相环实验——锁相环的使用
实验现象: 利用Quartus内部组件生成锁相环,用SignalTap II进行校验. 核心代码: //--------------------Module_PLL------------------ ...
- too many open files
压测遇到这个问题,每次都查,记录一下: 系统分配文件数太少,临时修改方案: ulimit -n 2048 永久配置: vim /etc/security/limits.conf 底部配置: # End ...
- svn常见错误解决
Svn冲突导致锁住的解决方案:错误码:svn: E155037: Previous operation has not finished; run 'cleanup' if it was interr ...
- wvblk 把 xp、2003、win7(32位) 装入 VHD
关键1:是[预安装]阶段F6加载wvblk驱动: or 在还原ghost镜像后,导入wvblk驱动. 关键1.5:对于 win7(32位)来说,还可以在设备管理器内,通过添加“过时”硬件的方式导入wv ...