python 迭代器
来源:互联网 发布:地方新闻网站源码 编辑:程序博客网 时间:2024/06/03 18:50
凡是可作用于for
循环的对象都是Iterable
类型;
凡是可作用于next()
函数的对象都是Iterator
类型,它们表示一个惰性计算的序列;
集合数据类型如list
、dict
、str
等是Iterable
但不是Iterator
,不过可以通过iter()
函数获得一个Iterator
对象。
Python的for
循环本质上就是通过不断调用next()
函数实现的,例如:
可以直接作用于for
循环的数据类型有以下几种:
一类是集合数据类型,如list
、tuple
、dict
、set
、str
等;
一类是generator
,包括生成器和带yield
的generator function。
这些可以直接作用于for
循环的对象统称为可迭代对象:Iterable
。
可以使用isinstance()
判断一个对象是否是Iterable
对象:
from collections import Iterablefrom collections import Iteratorprint("list is Iterable?--->", isinstance([], Iterable))print("list is Iterator?--->", isinstance([], Iterator))print("list 获取的迭代器 is Iterator?--->", isinstance([].__iter__(), Iterator))print("tuple is Iterator?--->", isinstance((), Iterable))print("tuple is Iterator?--->", isinstance((), Iterator))print("tuple 获取的迭代器 is Iterator?--->", isinstance(().__iter__(), Iterator))print("set is Iterator?--->", isinstance(set([]), Iterable))print("set is Iterator?--->", isinstance(set([]), Iterator))print("set 获取的迭代器 is Iterator?--->", isinstance(set([]).__iter__(), Iterator))print("dic is Iterator?--->", isinstance({}, Iterable))print("dic is Iterator?--->", isinstance({}, Iterator))print("dic 获取的迭代器 is Iterator?--->", isinstance({}.__iter__(), Iterator))print("迭代器 is Iterator?--->", isinstance((x for x in range(1, 10)), Iterable))print("迭代器 is Iterator?--->", isinstance((x for x in range(1, 10)), Iterator))def fib(max): n, a, b = 0, 0, 1 while n < max: yield b a, b = b, a + b n = n + 1 return 'done'g = fib(6)print("带 yield 的function is Iterator?--->", isinstance(g, Iterable))print("带 yield 的function is Iterator?--->", isinstance(g, Iterator))
list is Iterable?---> Truelist is Iterator?---> Falselist 获取的迭代器 is Iterator?---> Truetuple is Iterator?---> Truetuple is Iterator?---> Falsetuple 获取的迭代器 is Iterator?---> Trueset is Iterator?---> Trueset is Iterator?---> Falseset 获取的迭代器 is Iterator?---> Truedic is Iterator?---> Truedic is Iterator?---> Falsedic 获取的迭代器 is Iterator?---> True迭代器 is Iterator?---> True迭代器 is Iterator?---> True带 yield 的function is Iterator?---> True带 yield 的function is Iterator?---> True
阅读全文
0 0
- python迭代器
- python迭代器
- python 迭代器
- Python 迭代器
- Python:迭代器
- python 迭代器
- Python--迭代器
- python迭代器
- python 迭代器
- Python--迭代器
- python迭代器
- Python 迭代器
- Python 迭代器
- [python]迭代器
- python 迭代器
- python 迭代器
- Python 迭代器
- Python 迭代器
- 分布式开发--分布式消息中间件
- 一些基本的快捷键
- Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
- stm32_023_stm32定时器
- 按指定大小,分隔集合,将集合按规定个数分为n个部分
- python 迭代器
- 《OpenCV的起源与历史》
- 镇北大将军松露酒有副作用吗?
- libusb_bulk_transfer() 阻塞长达60s的原因
- 58. 网络驱动器设备: iSCSI 服务器
- Oracle 也加入到 Eclipse MicroProfile项目中了
- 5.Longest Palindromic Substring
- Hadoop学习总结
- java-内存管理(程序计数器、虚拟机栈、本地方法栈、堆、方法区)和常量池