Python容器、迭代器、生成器
来源:互联网 发布:刷机精灵 微信数据恢复 编辑:程序博客网 时间:2024/06/06 22:34
容器(container)、可迭代对象(iterable)、迭代器(iterator)、生成器(generator)、列表/集合/字典推导式(list,set,dict comprehension)的关系图:
容器(container)
容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用 in , not in 关键字判断元素是否包含在容器中。通常这类数据结构把所有的元素存储在内存中(也有一些特列并不是所有的元素都放在内存)在Python中,常见的容器对象有:list, deque, ....
set, frozensets, ....
dict, defaultdict, OrderedDict, Counter, ....
tuple, namedtuple, …
str
实例:
>>> i=1>>> i in [1,2,3]True
可迭代对象(iterable)
很多容器都是可迭代对象,此外还有更多的对象同样也是可迭代对象,比如处于打开状态的files,sockets等等。但凡可以返回一个 迭代器的对象都可称之为可迭代对象.
实例:
>>> x=[1,2,3,4,5]>>> y=iter(x)>>> z=iter(y)>>> type(y)<class 'list_iterator'>>>> type(z)<class 'list_iterator'>>>> next(y)1>>> next(y)2>>> next(y)3>>> next(y)4>>> next(y)5
迭代器
它是一个带状态的对象,他能在你调用 next() 方法的时候返回容器中的下一个值,任何实现了 __next__() (python2中实现 next() )方法的对象都是迭代器
实例:
>>> import itertools>>> from itertools import count>>> data=count(start=1,step=2)>>> next(data)1>>> next(data)3>>> next(data)5
序列:字符串、列表、元组
序列跟迭代器不一样,序列对象没有next()方法
生成器(generator)
生成器算得上是Python语言中最吸引人的特性之一,生成器其实是一种特殊的迭代器,不过这种迭代器更加优雅。
它不需要再像上面的类一样写 __iter__() 和 __next__() 方法了,只需要一个 yiled 关键字。 因此任何生成器也是以一种懒加载的模式生成值。,因此任何生成器也是以一种懒加载的模式生成值。生成器是迭代器,但是迭代器不一定是生成器,因为生成器是有状态的。
>>> def Generator_(l): n = 0 size = len(l) while n < size: yield l[n] n += 1>>> ge = Generator_([1, 2, 3])>>> for g in ge:print("generator:" + str(g))
生成器表达式
举例:a=(x*x for x in range(10))
阅读全文
0 0
- Python容器、迭代器、生成器
- python 迭代器 生成器 生成器表达式
- Python 容器切片,数组推倒,生成器
- python迭代器和生成器
- Python 迭代器和生成器
- Python 迭代器 生成器
- Python 迭代器和生成器
- Python迭代器和生成器
- python~迭代器~生成器~
- Python之生成器、迭代器
- python 迭代器与生成器
- Python迭代器和生成器
- python迭代器与生成器
- python 迭代器与生成器
- python迭代器以及生成器
- Python:迭代器与生成器
- Python 迭代器 生成器
- python迭代器与生成器
- Augular4 第三章(上) 路由基本概念,路由的配置,路由的参数传递
- 在Android so文件的.init、.init_array上和JNI_OnLoad处下断点
- 简单复习java历程
- js设置以及取得cookie
- 求1+2!+3!+...20!的两种方法
- Python容器、迭代器、生成器
- 保存excel下栽
- 浪潮涌动,扎堆上市后又扎堆退出,北京男子在金融平台踩雷10次
- Unity 多物体混合动画、值变动画控制器
- Apache Camel 基本概念理解
- Python学习-入门
- Win8.1+VS2013+WDK8.1+VirtualBox or VMware 驱动开发环境配置
- [分享]觉得不错的网站
- 一个功能强大的自定义SeekBar