python容器迭代器生成器
2021-03-08 02:31
标签:__next__ 包含 代码 报错 技术 ons rev pre cat title: python之容器迭代器生成器 放张图片 容器是用来储存元素的一种数据结构,容器将所有数据保存在内存中,Python中典型的容器有:list,set,dict,str等等。 for … in… 这个语句其实做了两件事。第一件事是获得一个可迭代器,即调用了__iter__()函数。 对于test这个类来说,它定义了__iter__和__next__函数,所以是一个可迭代的类,也可以说是一个可迭代的对象(Python中一切皆对象)。 含有__next__()函数的对象都是一个迭代器,所以test也可以说是一个迭代器。如果去掉__itet__()函数,test这个类也不会报错。如下代码所示: 生成器是一种特殊的迭代器。当调用fib()函数时,生成器实例化并返回,这时并不会执行任何代码,生成器处于空闲状态,注意这里prev, curr = 0, 1并未执行。然后这个生成器被包含在list()中,list会根据传进来的参数生成一个列表,所以它对fib()对象(一切皆对象,函数也是对象)调用 python容器迭代器生成器 标签:__next__ 包含 代码 报错 技术 ons rev pre cat 原文地址:https://www.cnblogs.com/id88/p/14210864.html
data: 2018-4-7
categories:
tags:
容器(container)
class test():
def __init__(self,data=1):
self.data = data
def __iter__(self):
return self
def __next__(self):
if self.data > 5:
raise StopIteration
else:
self.data+=1
return self.data
for item in test(3):
print(item)
4
5
6
1234
第二件事是循环的过程,循环调用__next__()函数。迭代器
class test():
def __init__(self,data=1):
self.data = data
def __next__(self):
if self.data > 5:
raise StopIteration
else:
self.data+=1
return self.data
t = test(3)
for i in range(3):
print(t.__next__())
4
5
6
1234
生成器
__next()__
方法,def fib(end = 1000):
prev,curr=0,1
while curr
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987]
上一篇:javascript 一02数组
下一篇:python方法