函数---迭代器&生成器&列表解析&三元表达式
- 提供了一种不依赖索引的统一的迭代方法
- 惰性计算,比如取文件的每一行
判断可是否是可迭代对象和迭代器
from collections import Iterable, Iterator # 导入模块功能
isinstance(a, Iterable) 查看a是否为可迭代对象
isinstance(a, Iterator) 查看a是否为可迭代器
迭代器:
 d={'a':1,'c':2,'b':3}
 obj=d.__iter__()
 while 1:     #while 迭代
     try:
         i=obj.__next__()
         print(i)
     except StopIteration:
         break
 for i in d:    #for 迭代
     print(i)
字符串,列表元组,字典,集合,文件都是可迭代的,只有文件是迭代器
生成器:
- 与return 类似,都可以返回值,但不一样的地方在于yeild返回多次值,而return只能返回一次值
- 为函数封装好了__iter__ 和__next__,把函数的执行结果做成一个迭代器
- 遵循迭代器的取值方式obj.__next(),触发的函数执行,函数暂停与再继续的状态都是由yiel保存
(包含yield的函数)
  yield 可以进行返回值操作,如果后面没有yield拦住,作为返回值,会报错 StopIteration  
    def foo():
      print(111)
      yield 1 # 如果打印下面.__next__的结果的话,会打印这个返回值
      print(222)
    f = foo() # 运行这一句的时候,系统不会运行 foo(),而是直接生成一个迭代器f
    f.__next__()
    f.__next__()
def producer():
print('first------>')
yield 1
print('second------>')
yield 2
print('third------->')
yield 3 for i in producer():
print(i)
def countdown(n):
print('start countdown') while n>0:
yield n
n-=1
print('stop countdown') for i in countdown(9):
print(i)
列表解析
  # 要求:将 s = 'hello' 放到新列表中
  [i.upper() for i in s] # for 循环得到i,将i作为列表的元素
  # 要求:判断列表 l = [1,31,73,84,57]中的元素, 如果大于30,就将i加入新列表
  res = [i for i in l if i > 30]
      加入字典的值(i)   循环( for i in l )     条件( if i > 30 )
三元表达式
  res = 2 if 2 > 3 else 3     # 正确时执行 判断条件 错误时执行
  print(res)
  结果:3            # 执行结果为 3
学习实例:
import time
def tail_func(filename,encoding='utf-8'):
with open(filename,'r',encoding=encoding) as f:
f.seek(0,2)
while 1:
line=f.readline()
if line:
yield line
else:
time.sleep(0.5) def grep_func(lines,pattern):
for line in lines:
if pattern in line:
print( line) b=tail_func('b.txt')
c=grep_func(b,'error')
for i in grep_func(c,''):
print(i)
编写 tail -f a.txt |grep 'error' |grep '404'命令
函数---迭代器&生成器&列表解析&三元表达式的更多相关文章
- day4 内置函数 迭代器&生成器 yield总结  三元运算 闭包
		内置函数: 内置函数 # abs()返回一个数字的绝对值.如果给出复数,返回值就是该复数的模. b = -100 print(b) print(abs(b)) # all() 所有为真才为真,只要有一 ... 
- Python 迭代器和列表解析
		Python 迭代器和列表解析 1)迭代器 一种特殊的数据结构,以对象形式存在 >>> i1 = l1.__iter__() >>> i1 = iter(l1) 可 ... 
- python函数-迭代器&生成器
		python函数-迭代器&生成器 一.迭代器 1 可迭代协议 迭代:就是类似for循环,将某个数据集内的数据可以“一个挨着一个取出来” 可迭代协议: ① 协议内容:内部实现__iter__方法 ... 
- Python(五)之迭代器和列表解析
		Python迭代器和列表解析 迭代器 例如: In [1]: l1 = [1,2,3,4,5] dir(i1)可以看到内置方法'__iter__' 生成一个迭代器: l1.__iter__,或i2 = ... 
- Python自动化运维之7、生成器、迭代器、列表解析、迭代器表达式
		迭代器和生成器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外 ... 
- 3、Python迭代器、列表解析及生成器(0530)
		1.动态语言 sys.getrefcount() //查看对象的引用计数 增加对象的引用计数场景 对象创建时:以赋值的方式,创建变量名的同时就会创建变量 将对象添加进容器时:类似list.app ... 
- xpinyin-函数返回多个值-lambda匿名函数-列表生成式-三元表达式
		import xpinyinp=xpinyin.Pinyin() #实例化print(p.get_pinyin('小白','')) 函数返回多个值:1.函数如果返回多个值的话,它会把这几个值放到一个元 ... 
- 函数与函数式编程(生成器 && 列表解析 && map函数 && filter函数)-(四)
		在学习python的过程中,无意中看到了函数式编程.在了解的过程中,明白了函数与函数式的区别,函数式编程的几种方式. 函数定义:函数是逻辑结构化和过程化的一种编程方法. 过程定义:过程就是简单特殊没有 ... 
- python学习-迭代器,列表解析和列表生成式
		迭代器为类序列对象提供了一个类序列的接口.Python 的迭代无缝的支持序列对象,而且还允许程序猿迭代非序列类型,包括用户定义的对象. 迭代器是一个next()方法的对象,而不是通过索引计数.当需要下 ... 
随机推荐
- Python Socket 网络编程 (客户端的编程)
			Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网页.QQ ... 
- 【独立开发人员er Cocos2d-x实战 013】Cocos2dx 网络编程实战之星座运势
			学习cocos2d-x和cocos creator的圈子:cocos2d-x:436689827 cocos creator:124727696 本篇文章主要内容:jsoncpp的使用,Coco ... 
- 什么是 HTTPS
			HTTPS (基于安全套接字层的超文本传输协议 或者是 HTTP over SSL) 是一个 Netscape 开发的 Web 协议. 你也可以说:HTTPS = HTTP + SSL HTTPS 在 ... 
- JAVA 虚拟机内存
			1.普通java应用程序,使用java命令运行, java -Xms1024m -Xmx1024m -XX:MaxNewSize=256m -XX:MaxPermSize=256m -jar 2.t ... 
- Unity3D学习笔记——IDE工作视图
			Unity3D中五个界面的使用: Project视图:存放游戏资源,比如贴图,音频,JS脚本等 Project中可创建的文件如下: Hierarchy视图:主要存放游戏场景中的对象,如摄像机,精灵,箱 ... 
- SSH总结(二)
			1.文件的操作,读写文件,解决乱码问题 读文件 InputStreamReader isr = new InputStreamReader(new FileInputStream(new File(p ... 
- linux命令之面试题1
			1.请解释下列10个shell命令的用途 top:是linux下常用的性能分析工具,能够实时的显示系统中各个进程的资源占用情况,类似于windows的资源管理器,查看系统的cpu,内存,运行时间,交互 ... 
- PHP中常用的输出语句比较?
			面试中经常问到这个,可以看下. 面试问题:比较echo print() print_r() var_dump()? echo(): 可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(la ... 
- SAP FI 中4个特殊期间
			标准SAP ERP里面有个13-16的4个特殊的会计期间,这4个特殊的会计期间如何使用?作用是什么? SAP记帐期间变式,会计年度与特殊期间. 记帐期间变式是较难理解的一个内容.不过要表达的内容很简单 ... 
- http://www.haolizi.net/example/view_2380.html
			null 
