求购瓜子黄杨种子去哪里?

小说:求购瓜子黄杨种子去哪里?作者:平海帝更新时间:2019-05-21字数:95699

可迭代的:内部含有__iter__方法的数据类型叫可迭代的,也叫迭代对象实现了迭代协议的对象

运用dir()方法来测试一个数据类型是不是可迭代的的。

迭代器协议是指:对象需要提供next方法,它要么返回迭代中的下一项,如果要么就引起一个StopIteration异常(当对象没有下一项时),以终止迭代。我们知道for循环可以遍历列表,元组,字符串等等,还可以遍历文档,这是为什么么呢?迭代器协议是指:对象需要提供next方法,它要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代,这是因为在python中实现了迭代协议,for循环不知道它遍历的是一个文件,它只管用迭代协议去访问对象。

迭代器:包含__next__,__iter__方法的数据就是迭代器。

迭代器的特点:

1.节省内存

2.惰性运算(什么时候用到,什么时候运行)

3.从前到后一次取值,过程不可逆,不可重复。

如果把迭代对象转变为迭代器?

 迭代器的方法:

1.__next__方法:返回迭代器的下一个 元素。

2.__iter__方法:返回迭代器对象本身。

l=["ha","hei","he"]
ret=l.__iter__()       #这个步骤生成迭代器,ret就称为了一个迭代器。

print(ret.__next__())
print(ret.__next__())

 

迭代器比可迭代对象多一个__next__方法

包含__next__方法的可迭代对象就是迭代器

判断一个变量是不是迭代器或者可迭代对象?

from collections import Iterator
from collections import  Iterable
print(isinstance([1,2,3,4],Iterable))
str_iter="abc".__iter__()
print(isinstance(str_iter,Iterator))

结果:

True
True

模拟for循环,解释for循环的内部原理。

不加try ....except 的情况下:

范例一:

l=[1,2,3,4,5]
ite=l.__iter__()
while True:
print(ite.__next__())
结果:
1 2 3 4 5 StopIteration 出现这种原因是while 循环不可以自动停止,然而迭代器从前到后一次取值,
过程不可逆,不可重复,所以就出现了这种情况。

如何避免这种错误?

范例二:

l=[1,2,3,4,5]
ite=l.__iter__()
while True:
    try:
        print(ite.__next__())
    except StopIteration:
            break

结果:

1
2
3
4
5

总结:for循环是让我们更简单的使用迭代器,用迭代器取值不需要关心索引或者key.

生成器:

带有yield 的函数叫做被称之为生成器(generator)。生成器是迭代器,它包含一切迭代器的方法。

创建生成器的两种方法:

1.生成器函数。常规函数定义,但是使用yield语句而不是return语句返回结果,return语句返回的是整个结果,而yield一次只返回一个结构,在每个结果中间它会记住函数状态,以便下次从他离开的地方开始。

2.生成器表达式:

生成器函数函数和普通函数之间的区别?

1.生成器函数中有yield关键字。

2.生成器函数执行后不会立即执行,而是返回一个生成器。

ef func():
    print("你好")
    yield 1
    print("中国")
    yield 2
func()
print(func())

结果:

<generator object func at 0x000002DD23F698E0>    #直接执行生成器函数后形成了一个生成器

如何让它打印执行?

ef func():
    print("你好")
    yield 1
    print("中国")
    yield 2
func()
g=func()
print(g.__next__()) #生成器就是迭代器。
print(g.__next__())

结果:

你好
1
中国
2

 

当前文章:http://www.cnsdbtzg.com/txl1o/72019.html

发布时间:2019-05-21 05:13:30

最新更新的美人梅多少钱一棵 2017年最新木瓜海棠价格 北京哪里卖红梅树? 金森女贞袋苗哪里有? 红梅花苗哪里有卖? 月季西枝牡丹是藤本吗? 乌桕树移栽成活率高吗? 紫玉兰树苗价格 紫叶李产地_紫叶李栽植 2016年最新杨树苗价格

86703 25603 83205 42085 75224 37351 51419 38392 59631 19204 97862 94627 13416 38502 67115 51901 45955 72027 32947 56278 85404 25263 55674

我要说两句: (0人参与)

发布