当前位置: 首页 > news >正文

江门制作网站公司企业网络规划毕业设计

江门制作网站公司,企业网络规划毕业设计,云服务器怎么做网站,世界上有php应用的网站@TOC 生成器 生成器使用 通过列表⽣成式,我们可以直接创建⼀个列表。但是,受到内存限制,列表容量肯定是有限的。⽽且,创建⼀个包含100万个元素的列表,不仅占⽤很⼤的存储空间,如果我们仅仅需要访问前⾯⼏个元素,那后⾯绝⼤多数元素占 ⽤的空间都⽩⽩浪费了。所以,如果…

@TOC

生成器

生成器使用
          通过列表⽣成式,我们可以直接创建⼀个列表。但是,受到内存限制,列表容量肯定是有限的。⽽且,创建⼀个包

含100万个元素的列表,不仅占⽤很⼤的存储空间,如果我们仅仅需要访问前⾯⼏个元素,那后⾯绝⼤多数元素占
⽤的空间都⽩⽩浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推
算出后续的元素呢?这样就不必创建完整的list,从⽽节省⼤量的空间。在Python中,这种⼀边循环⼀边计算的机
制,称为⽣成器:generator。
创建生成器,列表生成式,我们知道,只要将最外一层的中括号,改为小括号,⽣成器保存的是算法,每次调⽤ next(g) ,就计算出 g 的下⼀个元素的值,直到计算到最后⼀个元素,没有更多的元素时,抛出 StopIteration 的异常。当然,这种不断调⽤ next() 实在是太繁琐了,虽然是点一次出现一次,但正确的⽅法是使⽤ for 循环,因为⽣成器也是可迭代对象。所以,我们创建了⼀个⽣成器后,基本上永远不会调⽤next() ,⽽是通过 for 循环来迭代它,并且不需要关心StopIteration 异常。

list1 = [x for x in range(1,10)]
print(list1)
# 如何不让内存溢出 引入生成器(按照一个生成式来创建元素)
g = (x for x in range(1,10))
print(g)
print(next(g))

在这里插入图片描述

通过函数来创建生成器(yield)

通过斐波那契数列来实现
普通实现:

def test1(times):#初始化a,b=0,1n=0while n<times:print(b) #  yield b #yield用于创建一个生成器,工作返回后面变量值给生成器a,b=b,(a+b)n+=1return "done"print(test1(6))

生成器方式实现:

#引出生成器:对象,保存了产生元素的算法,同时会记录游标的位置
# 创建一个生成器: 1、通过列表生成式来创建
#                 2、通过函数来创建生成器(yield)
# 遍历生成器中元素内容:
#       1、通过next(g) ,当已经遍历到生成器的结尾抛异常 :StopIteration
#       2、通过for来遍历
#       3、object内置的__next__ :当已经遍历到生成器的结尾抛异常 :StopIteration
#       4、send 函数  ,但是生成器的第一个值必须使用send(None),后面的值就没有限制(不推荐使用)
def test2():#初始化a,b=0,1while True:temp = yield b #yield用于创建一个生成器,工作返回后面变量值给生成器,无返回值a,b=b,a+bprint(temp)
g4 =test2()
print(g4)
print(next(g4))
print(next(g4))
print(next(g4))print(g4.send(None))
print(g4.send(''))
print(g4.send(''))
print(g4.send(''))
print(g4.send(''))

⽣成器是这样⼀个函数,它记住上⼀次返回时在函数体中的位置。对⽣成器函数的第⼆次(或第 n 次)调⽤跳转⾄
该函数中间,⽽上次调⽤的所有局部变量都保持不变。⽣成器不仅“记住”了它数据状态;⽣成器还“记住”了它在流
控制构造(在命令式编程中,这种构造不只是数据值)中的位置。⽣成器的特点:

  1. 节约内存
  2. 迭代到下⼀次的调⽤时,所使⽤的参数都是第⼀次所保留下的,在整个所有函数调⽤的参数都是第⼀次所调⽤时保
    留的,⽽不是新创建的

迭代器

迭代是访问集合元素的⼀种⽅式。迭代器是⼀个可以记住遍历的位置的对象。迭代器对象从集合的第⼀个元素开始
访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
我们已经知道,可以直接作用于 for 循环的数据类型有以下几种:
一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等;
一类是 generator ,包括生成器和带 yield 的generator function。
这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable 。
那我们怎么判断一组数据或是一组数据对象是不是 Iterable 对象尼?
可以使⽤ isinstance() 判断⼀个对象是否是 Iterable 对象

from collections.abc import Iterable
# Iterable:可迭代对象,能够通过for循环来遍历
a=(1,)
b=[1,2]
c={}
def test1(args):if isinstance(args,Iterable):print("args是可迭代对象")else:print('args对象不是可迭代对象')
test1(a)
test1(b)
test1(c)
test1(10)

可以被next()函数调⽤并不断返回下⼀个值的对象称为迭代器

def test2(arg):if isinstance(arg, Iterator):print("args是迭代器")else:print('args对象不是迭代器')
test2(a)
test2(b)
test2(c)
test2(x for x in 
http://www.dtcms.com/a/472308.html

相关文章:

  • 做网站需要编程嘛wordpress筛选功能
  • wordpress 高手收入班级优化大师免费下载学生版
  • 做网站图片大小深圳做微信网站建设
  • 邢台学校网站建设报价wordpress增加内存
  • 哈尔滨市建设局网站商业网站模板下载
  • 怎么制作一个网站首页wordpress 等待响应
  • 旅游类网站开发毕业设计精美免费ppt模板下载
  • commons-collections4(集合工具库)
  • 张掖市作风建设年活动网站北京最新消息情况今天
  • 下采样与上采样:神经网络中的信息浓缩与恢复
  • h5响应式网站建设西安网站建设定
  • 网站上做镜像是什么意思深圳外贸网站定制
  • 内蒙古网站建设云聚企业网站托管技巧
  • 耐克网站建设策划方案网站搭建公司加盟
  • 北京做网站的人点播视频服务器
  • 春节网站设计wordpress themes 目录
  • 网站建设 做一个网站需要多少钱网站托管费
  • 合肥高端网站wordpress roles
  • 购房者网站北京哪家装修公司好
  • 有关于网站建设类似的文章做料理网站关键词怎么设置
  • 做任务可以给钱的网站陕西网站建设设计
  • 湖南建设监理报名网站wordpress无评论
  • 海淀网站建设哪家公司好网站建设主要做什么
  • 如何在DBeaver中配置高斯数据库的连接
  • 网站一般做几页wordpress网站推翻重建
  • 网站设计要点网页设计论文总结怎么写
  • 网站建设方案书 icp备案网站备案符号
  • 网站首页设计收费外贸网站如何做的好
  • 个人做网站如何赚钱广州网络推广哪家好
  • 网站公司销售cnzz如何查询某个网站频道的流量