Python零基础学习笔记(二十三)—— 迭代器
from collections import Iterable, Iterator ''' 可迭代对象:可以直接作用于for循环的对象统称为可迭代对象 (Iterable) 可以用isinstance()去判断一个对象是否是Iterable对象 可以直接作用于for的数据类型一般分两种 1、集合类数据类型:list、 tuple、 dict、 set、 string 2、是generator,包括生成器和带yield的generator function ''' print(isinstance([],Iterable)) print(isinstance((),Iterable)) print(isinstance({},Iterable)) print(isinstance("",Iterable)) print(isinstance((x for x in range(10)),Iterable)) print(isinstance(1,Iterable)) ''' 迭代器:不但可以作用于for循环,还可以被next()函数不断的调用并返回下一个值 直到最后抛出一个StopIteration错误表示无法继续返回下一个值 可以被next()函数调用并不断返回下一个之的对象称为迭代器 (Iterator对象) 可以用isinstance()函数判断一个对象是否是可迭代对象 ''' print(isinstance([],Iterator)) print(isinstance((),Iterator)) print(isinstance({},Iterator)) print(isinstance("",Iterator)) print(isinstance((x for x in range(10)),Iterator)) l = (x for x in range(4)) print(l) print(next(l)) print(next(l)) print(next(l)) print(next(l)) lq = (x for x in [1, 2, 3, 5]) print(next(lq)) print(next(lq)) print(next(lq)) print(next(lq)) #同理tuple、dict、set、string都可以 #转换成Iterator对象 a = iter([2, 4, 6]) print(next(a)) print(next(a)) print(next(a)) print(isinstance((a), Iterator)) endstr = "end" str = "" for line in iter(input, endstr): str += line + "\n" print(str)
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
如何使用Hanlp加载大字典
问题 因为需要加载一个 近 1G 的字典到Hanlp中,一开始使用了CustomDictionay.add() 方法来一条条的加载,果然到了中间,维护DoubleArraTre 的成本太高,添加一个节点,都会很长时间,本来时间长一点没有关系,只要训练出.bin 的文件,第二次加载就会很快,然而作为以空间换时间的DAT结构,内存消耗很大,预料之内的出现了 1 out of memory: heap size 的问题。后来尝试直接加载了1G 的字典,显然更不行。 思路 阅读了Hanlp的部分源码,也请教了原作者一部分问题,就打算从源码入手。初步想法大概是将原始字典 split 成多份,然后分别将多份的小字典 训练成 多个小的.bin 文件,再完整的加载到内存中,基于的原则则是:加载两个10M的字典的消耗比一个20M的要小。 然后又优化了一部分,现在加载一个大概1G的字典,占内存约3g+ ,已经可以使用了。 大概流程 1 修改 CustomDictionary.java 设置一个 hashmap 或者 一个 list 来存储所有的小Dat 2 将所有的dat加载完,这里就不再区分主副字典了。...
- 下一篇
集群选举算法实现
一个分布式服务集群管理通常需要一个协调服务,提供服务注册、服务发现、配置管理、组服务等功能,而协调服务自身应是一个高可用的服务集群,ZooKeeper是广泛应用且众所周知的协调服务。协调服务自身的高可用需要选举算法来支撑,本文将讲述选举原理并以分布式服务集群NebulaBootstrap的协调服务NebulaBeacon为例详细说明协调服务的选举实现。 为什么要选NebulaBeacon来说明协调服务的选举实现?一方面是我没有读过Zookeeper的代码,更重要的另一方面是NebulaBeacon的选举实现只有两百多行代码,简单精炼,很容易讲清楚。基于高性能C++网络框架Nebula实现的分布式服务集群NebulaBootstrap是一种用C++快速构建高性能分布式服务的解决方案。 为什么要实现自己的协调服务而不直接用Zookeeper?想造个C++的轮子,整个集群都是C++服务,因为选了ZooKeeper而需要部署一套Java环境,配置也跟其他服务不是一个体系,实在不是一个好的选择。Spring Cloud有Eureka,NebulaBootstrap有NebulaBeaco...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8编译安装MySQL8.0.19
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题