博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Day13
阅读量:4983 次
发布时间:2019-06-12

本文共 1637 字,大约阅读时间需要 5 分钟。

1、迭代器

内部含有__iter__方法的对象就叫做可迭代对象

可迭代对象遵循可迭代协议

for循环可以循环的就是可迭代对象

   可迭代对象:str,list,set,dict,tuple,range,

   迭代器:f1文件句柄

如何判断 两种方式

s='laonanhai'print('__iter__' in dir(s))
l=[1,2,3,4] from collections import Iterableprint(isinstance(l,Iterable))  #Trueprint(type(l))    #class listprint(isinstance(l,list)) #True

迭代器

l1=[1,2,3]

可迭代对象转化成迭代器:可迭代对象.__iter__()    --->迭代器

迭代器不仅含有__iter,还含有__next__ 遵循迭代器协议

l1_obj=l1__iter__()  #迭代器print('__iter__' in dir(l1_obj))print('__next__' in dir(l1))print('__next__' in dir(l1_obj))print(l1_obj.__next__())for i in l1_obj:    print(i)

判断迭代器:

print('__iter__' in dir(s))

print('__iter__' in dir(s))

print(isinstance(s,Iterable))

迭代器的好处:

1、节省内存空间

2、满足惰性机制

3、不能反复取值,不可逆

#1、将可迭代对象转化成迭代器#2、内部使用__next__方法取值#3、运用了异常处理去处理报错l2=[1,2,3,4,5,6,7,8]l2_obj=l2.__iter__()while True:    try:        i=l2_obj.__next__()        print(i)        except Exception:            break

2、生成器

生成器本质上是迭代器

l=[1,2,3]

l.__iter__()

生成器的产生方式:

1、生成器函数构造

2、生成器推导式构造

3、数据类型的转化

def func1():    print(111)    print(222)    print(333)    yield 666    yield 555    yield 777print(g.__next__())print(g.__next__())print(g.__next__())

第一:函数中只要有yield那他就不是一个函数,而是一个生成器

第二:g称为生成器对象

def func1():    for i in range(1,10001):        yield '老男孩校服%d号' %ig=func1()for i in range(50):    print(g.__next__())for j in range(150):    print(g.__next__())
l1=[i for i in range(1000)]print(l1)

send:next和send功能一样,都是执行一次

send可以给上一个yield赋值

def generator():    print(123)    content = yield 666    print(content)    print(456)    yield 777g = generator()g.__next__()g.send('hello')

 

from collections import Iterable

转载于:https://www.cnblogs.com/a352735549/p/8709947.html

你可能感兴趣的文章
[置顶] 一名优秀的程序设计师是如何管理知识的?
查看>>
highcharts曲线图
查看>>
extjs动态改变样式
查看>>
宏定义
查看>>
笔记:git基本操作
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 C】 Pie Rules
查看>>
Ognl中“%”、“#”、“$”详解
查看>>
我对应用软件——美团的看法
查看>>
python第六篇文件处理类型
查看>>
向量非零元素个数_向量范数详解+代码实现
查看>>
LeetCode 题解之Add Digits
查看>>
hdu1502 , Regular Words, dp,高精度加法
查看>>
iOS 电话在后台运行时,我的启动图片被压缩
查看>>
js --基本语法3 函数,数组,堆棧
查看>>
Oracle 数据库导入、导出
查看>>
批量修改 表结构
查看>>
MySQL的btree索引和hash索引的区别
查看>>
抽象类和接口有什么区别
查看>>
wc2018
查看>>
[转载] 杜拉拉升职记——01 忠诚源于满足
查看>>