Python3 三器个人理解
2021/7/20 17:37:37
本文主要是介绍Python3 三器个人理解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一:迭代器
迭代是重复反馈过程的活动,迭代器就是重复反馈过程活动的容器(python中为对象)。
迭代器从序列的第一个元素访问,中间不能后退直至所有元素被访问结束。
迭代器只有在迭代到某个元素时才计算该元素,在此之前的或之后的可以不存在或者被销毁。因此资源占比比较少。
用法:
1、使用iter(iterable)内置函数创建
>>> a=iter([1,2,3]) >>> a.__next__() 1 >>> a.__next__() 2 >>> a.__next__() 3 >>> a.__next__() Traceback (most recent call last): File "<stdin>", line 1, in <module> StopIteration
2、自定义迭代器
自定义迭代器需实现__next__()和__iter__()方法。其中__next__()方法返回对象的下一个元素到最后抛出异常StopIteration;__iter__()方法返回迭代器本身self。
class TestIter(object): a, b, n = 1, 0, 0 def __init__(self, my_max): self.max = my_max def __iter__(self): return self def __next__(self): if self.n < self.max: tmp = self.a self.b, self.a = self.a, self.a + self.b self.n += 1 return tmp raise StopIteration print(TestIter(5)) for i in TestIter(10): print(i, end=' ')
二、生成器
在Python中,一边循环一边计算的机制,称为生成器。是不是很熟悉,我们可以认为生成器是一个返回迭代器的函数。
用法:
一:列表生成器
我们只需要将列表生成器的【】改为()就可以了
>>> list_1 = [x+1 for x in range(10)] >>> list_1 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> gen_1 = (x+1 for x in range(10)) >>> gen_1 <generator object <genexpr> at 0x000000000240BE40> >>> gen_1.__next__() 1 >>> gen_1.__next__() 2 >>> gen_1.__next__() 3 >>> gen_1.__next__() 4
二、yield
>>> def fib(mymax): ... n,a,b = 0,0,1 ... while n < mymax: ... yield b ... a,b = b,a+b ... n += 1 ... >>> fib(5) <generator object fib at 0x000000000248E6D0> >>> for i in fib(10): ... print(i) ... 1 1 2 3 5 8 13 21 34 55
三、装饰器
详情
这篇关于Python3 三器个人理解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程