day14 Pyhton学习
一.迭代器-概念
可迭代协议:内部含有__iter__方法的值/变量都是可迭代的
如何得到一个迭代器:可迭代变量.__iter__()返回一个迭代器
迭代器协议:内部含有__iter__方法和__next__方法的值/变量都是迭代器
迭代器的特点:节省内存,惰性运算,一次性取值,只能按顺序取
可迭代和迭代器的关系:
所有的迭代器都是可迭代的,反之不成立
迭代器是特殊的存在
for循环和迭代器的关系:
无论是可迭代的还是迭代器都是可以被for循环
如果直接循环迭代器,那么循环一次就没有了
如果循环的非迭代器,那么每一次循环都相当于从头到尾的循环
因为在for循环中的所有非迭代器都会通过iter生成一个新的迭代器
l = [1,2,3,4]
res1 = l.__iter__()
res2 = l.__iter__()
# res1和res2都是迭代器
# 是两个完全不同的迭代器
用while循环实现一个for循环的功能(循环list/dict)
# l = [1,2,3,5,6,7,12,23,412]
# l_iter = l.__iter__()
# while True:
# try: # 要保护的代码
# print(l_iter.__next__())
# except StopIteration: # 要保护的代码中一旦出现了StopIteration错误,程序不报错,直接执行break
# print('报错啦')
# break
day14 Pyhton学习的更多相关文章
- Pyhton学习——Day26
#多态:多态指的是一类事物有多种形态# import abc# class Animal(metaclass = abc.ABCMeta):# 同一类事物:动物# @abc.abstractclass ...
- pyhton 学习
官方学习文档 https://docs.python.org/3/tutorial/
- 20190320_head first pyhton学习笔记之构建发布
1.把代码nester.py放入文件夹nester中,在文件夹中再新建一个setup.py文件,文件内容如下: from distutils.core import setup setup( name ...
- Pyhton学习——Day2
Python开发IDE(工具)Pycharm.eclipse1.循环while 条件 #循环体 #条件为真则执行 #条件为假则执行break用于退出所有循环continue用于退出当前循环 2.Pyc ...
- Pyhton学习——Day28
#上下文协议:文件操作时使用with执行# with open('a.txt','w',encoding='utf-8') as f1:# with语句,为了让一个对象兼容with语句,必须在这个对象 ...
- Pyhton学习——Day27
# hasattr(obj,'name')-->obj.name# getattr(obj,'name',default = 'xxx')--->obj.name# setattr(obj ...
- Pyhton学习——Day25
#面向对象的几个方法#1.静态方法@staticmethod,不能访问类属性,也不能访问实例属性,只是类的工具包#2.类方法:@classmethod,在函数属性前加上类方法,显示为(cls)代表类, ...
- Pyhton学习——Day24
# #面向对象设计:# def dog(name,gender,type):# def jiao(dog):# print('One Dog[%s],wfwfwf'%dog['name'])# def ...
- Pyhton学习——Day23
#re模块方法:findall search#findall:返回所有满足匹配条件的数值,放在列表里#search : #函数会在字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象 ...
随机推荐
- AutoGenerator自动生成代码
程序猿学社: https://blog.csdn.net/qq_16855077/article/details/105316295
- zookeeper与分布式系统
1.1. 分布式系统基础知识 一个tomcat打天下的时代,不能说完全淘汰了,在一个管理系统,小型项目中还经常使用,这并不过分,出于成本的考虑,这反而值得提倡. 1.1.1. 分布式系统是什么 分 ...
- flutter vscode 安卓打包apk文件
配置 VSCode默认是没有使用密钥签名的,往往我们在正式项目中是需要签名的.那就创建好了...所以需要自己创建并使用密钥签名 步骤一 创建密钥库 执行以下命令: keytool -genkey -v ...
- 7.SwrContext音频重采样使用
头文件位于#include <libswresample/swresample.h> SwrContext常用函数如下所示 SwrContext *swr_alloc(void); / ...
- CSS -- 盒子模型之边框、内边距、外边距
一.使用border为盒子添加边框 盒子模型的边框就是围绕着内容及补白的线,这条线你可以设置它的粗细.样式和颜色(边框三个属性). 1.border-style(边框样式)常见样式有: dashed( ...
- jmeter(一)
一.首先是下载:下载地址为:http://jmeter.apache.org/download_jmeter.cgi选择Binaries下的相应压缩包.ps:jmeter是开源项目,一般这种开源项目B ...
- Unit1:Android
unit1 1.安卓版本 最新数据访问维基百科 2008年,android1.0 2011年,android3.0,平板失败 同年10月,android4.0,无差别使用 2014年,android5 ...
- k8s控制器资源
k8s控制器资源 Pod pod在之前说过,pod是kubernetes集群中是最小的调度单元,pod中可以运行多个容器,而node又可以包含多个pod,关系如下图: 在对pod的用法进行说明之前 ...
- 趣图:后端工程师做 UI 的活
扩展阅读 趣图:苦逼的后端工程师 趣图:前端 VS 后端 [趣图]开发人员腹黑的一面
- MyBatis学习(三)日志输出环境配置
一.编写日志输出环境配置文件 在开发过程中,最重要的就是在控制台查看程序输出的日志信息,在这里我们选择使用 log4j 工具来输出: 准备工作:将[MyBatis]文件夹下[lib]中的 log4j ...