python3 生成器&迭代器

#Author by Andy#_*_ coding:utf-8 _*_import timefrom collections import Iterable#列表生成式

def func():    list=[]    for i in range(10000000):        list.append(i)    print(list)#print(list)#[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]generator=(i for i in range(10))

#print(type(generator))def func1():    for i in generator:        print(i)def timmer():    time_start=time.time()    func1()    time_stop=time.time()    print(time_stop-time_start)#定义斐波那契数列def fib(max):    n,a,b=0,0,1    while n < max:        print(b)        a,b=b,a+b        n=n+1fib(10)# 注意,赋值语句:# a, b = b, a + b# 相当于:# t = (b, a + b)  # t是一个tuple# a = t[0]# b = t[1]def fib(max):    n,a,b=0,0,1    while n < max:        yield b        a,b=b,a+b        n=n+1    return ‘done‘f=fib(10)s=‘我是分割线‘print(f.__next__())print(s.center(50,‘-‘))print(f.__next__())print(s.center(50,‘-‘))#异常捕获g=fib(10)while True:    try:        x = next(g)        print(x)    except StopIteration as e:        print("Generator got en error:",e.value)        break##############################################################通过yield实现在单线程的情况下实现并发运算的效果def consumer(name):    print(‘%s 准备买面包啦‘%name)    while True:        product=yield        print(‘%s 买了面包%s‘%(name,product))def producer():    c1=consumer(‘韩梅梅‘)    c2=consumer(‘李雷‘)    c1.__next__()    c2.__next__()    for i in range(10):        time.sleep(1)        print(‘面包%s和面包%s出炉了!‘%(i,i+1))        c1.send(i)        c2.send(i+1)#producer()

# 迭代器# 可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。# # isinstance()判断一个对象是否是Iterable对对象# 生成器都是Iterator对象,但list、dict、str虽然是Iterable,却不是Iterator。# 把list、dict、str等Iterable变成Iterator可以使用iter()函数

print(isinstance(generator,Iterable))#True
时间: 2024-10-07 11:51:50

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

python高级之生成器&amp;迭代器

python高级之生成器&迭代器 本机内容 概念梳理 容器 可迭代对象 迭代器 for循环内部实现 生成器 1.概念梳理 容器(container):多个元素组织在一起的数据结构 可迭代对象(iterable):对象中含有__iter__()方法 迭代器(iterator):对象含有__next__()方法,并且迭代器也有__iter__()方法 生成器(generator):生成器其实是一种特殊的迭代器,不过这种迭代器更加优雅 列表/集合/字典推导式(list,set,dict compreh

Python 生成器&迭代器

Python 生成器 带有 yield 的函数在 Python 中被称之为 generator(生成器),用斐波那契数列: def fab(max):     n, a, b = 0, 0, 1     while n < max:         yield b         a, b = b, a + b         n = n + 1 执行: 1 2 3 4 5 6 7 8 9 >>> for n in fab(5):     print n 1 1 2 3 5 简单地

【python基础】生成器&amp;迭代器

一.生成器:generator 按照规则去生成一定的数据 1.列表推导式和生成器的区别 列表推导式: 一次性生成所有满足条件的数据 生成器: 你要一个数据, 我生成出来给你一个 2.生成器表达式 生成器对象 = (表达式 for item in 容器) 生成器对象 = (表达式 for item in 容器 if 条件) 生成器对象 = (表达式 for item in 容器 for item2 in 容器2) 3.通过生成器对象获取数据 (1)next(g) (2)for in 依次获取生成器

python3.5-day5_迭代器_生成器_装饰器_模块

笔者QQ 360212316 迭代器&生成器 生成器: 一个函数调用返回一个迭代器,那这个函数叫做生成器,如果函数中包含yield语法,那么这个函数就会变成生成器 生成器的特点: 1.生成器必须从前往后一次访问,不能跳着取 2.生成器只记录访问的数据,其他数据释放 3.生成器的作用就是预想可能用到那么多的数据 生成器的两种方式: 方式一: data = (x * 2 for x in range(5)) # 获取结果的两种方式 print(data.__next__()) print(next(

【Python3之迭代器,生成器】

一.可迭代对象和迭代器 1.迭代的概念 上一次输出的结果为下一次输入的初始值,重复的过程称为迭代,每次重复即一次迭代,并且每次迭代的结果是下一次迭代的初始值 注:循环不是迭代 while True: #只满足重复,因而不是迭代 print('====>') 2.可迭代的对象 内置__iter__方法的,都是可迭代的对象. list是可迭代对象,dict是可迭代对象,set也是可迭代对象. [1,2].__iter__() 'hello'.__iter__() (1,2).__iter__() {

python-学习笔记之-Day5 双层装饰器 字符串格式化 python模块 递归 生成器 迭代器 序列化

1.双层装饰器 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:zml LOGIN_INFO = False IS_ADMIN = False   def check_log(func): def inner(): res = func() if LOGIN_INFO: print('验证成功!') return res else: print('验证失败!') return inner   def check_admin(func)

python列表生成式&amp;生成器&amp;迭代器

一.列表生成式 什么是列表生成式? 列表生成式是快速生成列表的一种方式.(貌似有些废话) 更专业点的说法:列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 在python2.7里 举个例子,要生成list [1,2,3,4,5],可以用range(1,6) >>> range(1,6) [1, 2, 3, 4, 5] 但是如果要生成[1x1,2x2,3x3,4x4,5x5]怎么做呢? 普通青年做法: >>&

Python中的内置模块与生成器迭代器-day5

Python3 中内置模块 Python中的列表生成式 Python生成器 Python迭代器 一.Python中的内置模块 PS:作为一个新手如果你不想使用IDE又想使用Python中的自动补全,可以下载使用ipython.下面实例中也大多是ipython输入和输出的内容. 安装ipython:pip3 install ipython Python3-内置函数 - abs() 绝对值 - all() 都为真 - any() 有一个为真 - ascii() 把字符串转换成ASCII - bin(

列表生成式、生成器&amp;迭代器

一.列表生成式 先有列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求你把列表里的每个值加1,怎么实现? 方法一: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] b = [] for i in a:b.append(i+1) a = b print(a) 此方法内存中会同时有两份列表,因此不适合处理大规模数据. 方法二: a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for index,i in enumerate(a): a[