python3 迭代器与生成器

pythom3 迭代器与生成器

迭代器‘‘‘迭代器是python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置对象迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问玩结束。迭代器只能往前不会后退。迭代器有两个基本方法:iter()和next().字符串,列表或元组对象都可用于创建迭代器:

‘‘‘
list=[1,2,6,3]
it=iter(list)#创建迭代器对象
print(next(it))#结果1
print(next(it))#结果2
print(next(it))#结果6
#根据上面的,就可以推断打印一次就可以输出迭代器的下一个元素

for i in it:#利用for循环依次迭代输出
    print(i)
#也可以使用next()函数
import sys #引入sys模块
li=[1,2,365,9]
ip=iter(li)#创建迭代器对象
while True:
    try:
        print(next(ip))
    except StopIteration:
        sys.exit()
#结果1,2,365,9
生成器yield‘‘‘在python中,使用了yield的函数被称为生成器(generator)跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。在调用生成器的运行过程中,每次遇到yield时函数会暂停并保存当前所有运行信息,返回yield的值。并在下一次执行next()方法时从当前位置继续运行‘‘‘
#使用yield实现斐波那契数列
import sys
def fibonacci(n):#生成函数 斐波那契
    a,b,counter=0,1,0
    print(‘a‘,a)
    while True:
        if(counter>n):
            return
        yield a
        a,b=b,a+b
        counter+=1
f=fibonacci(10)#f是一个迭代器由生成器生成
while True:
    try:
        print(next(f),end=‘ ‘)
    except StopIteration:
        sys.exit()
#结果是0,1,1,2,3,5,8,13,21,34,55

总结;

什么情况下需要使用yield

    一个函数f,f返回一个list,这个list是动态计算出来的(不管是数学上的计算还是逻辑上的读取格式化),

    并且这个list会很大(无论是固定很大还是随着输入参数的增大而增大),这个时候,我们希望每次调用这个函数并使用迭代器进行

    循环的时候一个一个的到每个list元素而不是直接得到一个完整的list来节省内存,这个时候yield就很有用。

时间: 2024-10-22 16:01:35

python3 迭代器与生成器的相关文章

python014 Python3 迭代器与生成器

Python3 迭代器与生成器迭代器迭代是Python最强大的功能之一,是访问集合元素的一种方式..迭代器是一个可以记住遍历的位置的对象.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退.迭代器有两个基本的方法:iter() 和 next().字符串,列表或元组对象都可用于创建迭代器:实例(Python 3.0+) >>>list=[1,2,3,4] >>> it = iter(list) # 创建迭代器对象 >>&g

Python3迭代器和生成器

迭代器 迭代是Python最强大的功能之一,是访问元素集合的一种方法. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,迭代器只能向前不会后退. 迭代器有两个基本方法,iter()和next(). 字符串,列表,或元组对象都可以用于创建迭代器. 迭代器对象可以使用常规语句for进行遍历: 使用next()函数: #next.py import sys list = [1,2,3,4] it = iter(list) while True:

Python3迭代器与生成器

迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退. 迭代器有两个基本的方法:iter() 和 next(). 字符串,列表或元组对象都可用于创建迭代器: >>>list=[1,2,3,4] >>> it = iter(list) # 创建迭代器对象 >>> print (next(it)) # 输出迭代

[Python3]迭代器和生成器

迭代器 迭代是Python最强大的功能特色,是遍历访问序列元素的一种方式. 迭代器的特性是: 可以记住当前遍历位置 只能往前遍历,不能后退 从序列的第一个元素开始访问,直至所有元素被访问完 有两个基本方法: iter() 和 next() 字符串.列表或元组对象可以用于创建迭代器 下面看以下实例: # -*- coding:utf-8 -*- __author__ = '谷白' import sys if __name__ == "__main__": seq_tuple = (1,

Python3 From Zero——{最初的意识:004~迭代器和生成器}

一.反向迭代:reversed() >>> a [1, 2, 3, 4] >>> for x in reversed(a): ... print(x, end=' ') ... 4 3 2 1 #反向迭代只有在待处理的对象具有确定的大小或者对象实现了__reversed()__特殊方法时才能奏效,否则必须先将对象转化为列表(可能消耗大量内存) >>> with open('/etc/passwd', 'rt') as file: ... for x i

第四周Python--装饰器(迭代器、生成器)

---恢复内容开始--- 上节回顾: 编码:Python3中默认的是unicode,Python2中默认的是ASCII 区分:局部变量和全局变量 递归的特点: 1)规模减少 2)明确结束条件 3)效率低 函数式编程,不会有副作用,传递什么值就会有什么结果. 本节内容: 1.迭代器和生成器 2.装饰器 3.Json和Pickle序列化 4.软件目录结构规范 5.作业:ATM 1.迭代器&生成器 迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束

Python 函数式编程之迭代器、生成器及其应用

python 标准库中提供了 itertools, functools, operator三个库支持函数式编程,对高阶函数的支持,python 提供 decorator 语法糖. 迭代器 (iterator)和生成器(generator)概念是 python 函数式编程的基础,利用迭代器和生成器可以实现函数式编程中经常用到的 map(), filter(), reduce() 等过程以及 itertools, functools 中提供的绝大部分功能. 1.迭代器和生成器基础(next, ite

流畅python学习笔记:第十四章:迭代器和生成器

迭代器和生成器是python中的重要特性,本章作者花了很大的篇幅来介绍迭代器和生成器的用法. 首先来看一个单词序列的例子: import re re_word=re.compile(r'\w+') class Sentence(object):     def __init__(self,text):         self.text=text         self.word=re_word.findall(text)     def __getitem__(self, item):   

python迭代器、生成器和yield语句

http://blog.csdn.net/pipisorry/article/details/22107553 一.迭代器(iterator) 迭代器:是一个实现了迭代器协议的对象,Python中的迭代器协议就是有next方法的对象会前进到下一结果,而在一系列结果的末尾是,则会引发StopIteration.任何这类的对象在Python中都可以用for循环或其他遍历工具迭代,迭代工具内部会在每次迭代时调用next方法,并且捕捉StopIteration异常来确定何时离开. 迭代器对象要求支持迭代