python 迭代器/生成器
2019-02-28 18:42
155 查看
**
迭代器
**
可迭代对象:可调用__iter__()方法的对象,大部分对象都是可迭代的
string='hello world' print(string.__iter__()) 输出: <str_iterator object at 0x0311CB10>
容器:•容器是一系列元素的集合,str、list、set、dict、file、sockets对象都可以看作是容器,容器都可以被迭代(用在for,while等语句中),因此他们被称为可迭代对象。
迭代器:将可迭代对象通过iter方法放入一个容器中
基本方法:
生成迭代器:iter(iterable_object)
获取迭代器内数据:iter_generator.next()
生成迭代器:
string='hello world' it=iter(string) print(next(it)) print(type(it)) #输出: h <class 'str_iterator'>
迭代器的特点:
迭代器对象从集合的第一个元素开始访问,每个元素只能访问一次,知道结束,无法循环访问,超过可访问的次数即报错
string=[1,2,3,4] it=iter(string) print(next(it)) print(next(it)) print(next(it)) print(next(it)) print(next(it)) 输出: 1 2 3 4 Traceback (most recent call last): File "C:\Users\高顿\Desktop\myblog.py", line 7, in <module> print(next(it)) StopIteration
生成器
生成器:生成器其实是一种特殊的迭代器
特征:一个函数,不用return返回,而用yield返回,返回的是一个迭代器
#用生成器 def mygenerator(): for i in range(100): if i >50: yield i f=mygenerator() print(next(f)) 输出: 51 ************************************* #用普通函数 def mygenerator(): s=[] for i in range(100): if i >50: s.append(i) return s f=mygenerator() print(f) #输出: [51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
可以看出,使用生成器,可以省代码,更简洁。
相关文章推荐
- python--迭代器与生成器
- 有关python函数总结;可迭代对象、生成器与迭代器的区别;相关函数
- python 迭代器 生成器
- Python通过for循环理解迭代器和生成器实例详解
- Python生成器与迭代器
- python 匿名函数,生成器迭代器
- python 迭代器和生成器
- python迭代器和生成器(3元运算,列表生成式,生成器表达式,生成器函数)
- python迭代器和生成器简介
- Python 迭代器生成器
- 【python】迭代器和生成器区别
- python 迭代器(iterator)和生成器(constructor)
- Python3 迭代器与生成器
- Python学习笔记--迭代器&生成器
- Python 生成器 & 迭代器
- Python生成器、迭代器、可迭代对象
- python 迭代器 和 生成器 的个人理解
- python中的迭代器和生成器(一)——迭代器
- python 迭代器 生成器
- python的高级特性:切片,迭代,列表生成式,生成器,迭代器