范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

测开之数据类型第3篇列表推导式字典推导式创建生成器

  一、列表推导式
  推导式可以帮助我们快速创建列表、创建字典。比如现在要创建一个列表。
  做自动化测试的时候,比如创建个 url 列表,url 列表里面可能是存储了网站的页数:
  一直到 100,生成 100 个页面,但是这 100 个页面有规律,url 地址,前面这一部分是不变的,只有后面的 1,2,3,4 这部分的变化。
  如果去生成这样一个列表,不用列表推导式,用之前的方法的话,可以这样做,先定义一个空列表:
  urls = []
  然后来个 for 循环 set 100 个:
  for i in range(1,101):
  前面字符串这部分是确定的,比如说一个 page,后面这部分不确定,就来个format()给它填进去。
  url = "page{}".format(i)
  通过append()把 url 加进去。 # url = ["page1","page2"]  urls = []  for i in range(1,101):    url =  "page{}".format(i)    urls.append(url)  print(urls)
  能够生成 1-100 个页面。
  推导式有个优势,一行就能解决。推导式可以看成 for 循环的一个解体。
  写起来特别简单,同样的功能,推导式可以这样写:
  # 列表推导式  urls1 = [i for i in range(1,101)] print(urls1)
  这段列表推导式代码解释是:
  for 循环,i 从 range 里面循环,循环出来拿出一个 i,然后往前面放到这个列表里面。
  再拿出一个 i 放到这个列表里面,这样重复(拿出一个 i 放到列表里面),直到把 for 循环遍历完。
  将里面所有的元素都拿出来放到列表里面,最后生成一个新的列表,这就是列表推导式。
  里面是 1-100 个数字:
  如果用列表推导式生成这个 page1,到 100 页。代码就修改成这样: urls1 = ["page{}".format(i)  for i in range(1,101)] print(urls1)
  "page{}".format(i)
  format()格式化字符串的函数。
  # 列表推导式  urls1 = ["page{}".format(i)  for i in range(1,101)] print(urls1)
  简而言之,就是遍历出来的元素放到这个前面就行了。然后在前面,你可以做其它操作。
  以上,这就是用列表推导式快速生成一个列表。 二、字典推导式
  字典推导式和列表推导式,它的原理是一样的。都用 for 循环去遍历,然后拿出对应的值在前面,生成对应的值。
  每遍历一轮,会把前面你写的内容放到字典里面去。前面写个键,键就是遍历出来的i,对应的值就是i+1。
  dict1 = {i:i+1 for i in range(10)} print(dict1)
  键就是遍历出来的i,值就是键的基础上加 1。每循环遍历一轮,这个就生成一个键值对。
  推导式可以推导出字典,也可以推导出列表。大括号、中括号、花括号都可以。
  推导式改成小括号后是什么?
  中括号是列表,花括号是字典,小括号是元组。
  推导式改成小括号后,不再是个元组了,是个生成器。 # () 生成器表达式  tu = (i for i in range(10)) #生成器对象 print(tu) 三、2 种方式创建生成器1.生成器表达式1.1 什么是生成器?
  这里有很多数据,可以把它装到一个 "就像自动取筷盒,拿出一双筷子,自动下来一双筷子",就是你要用的时候,它给你生成一个出来。
  生成器不像列表,比如创建个列表,比如列表里面有一千个元素,创建列表的时候,那么这一千个元素已经被创建好放在列表里面了。生成器不是这样,它内部只保留了一个生成器计算的规则。 1.2 使用生成器的好处生成器要生成一千个元素,这样:
  tu = [i for i in range(1000)]#生成器对象
  直接生成一千个元素的列表。改成生成器,这个生成器对象里面存储的是一个计算公式,并没有存储这一千条数据啊。
  使用生成器来存储这些数据的话,相对于列表的优势是: 不那么占内存。
  一千条数据可能看不出效果,如果是一千万条数据往列表里面一放,那得占用多大的内存啊。如果是个生成器,里面就是个计算的规则,就是个生成的规则,没有那么多数据,节约内存,可以提高代码的性能。 1.3 拿生成器里面的数据,也可以一个一个得拿,怎么拿呢?
  生成器表达式,打印出来是个生成器。
  当然,可以通过list把它转换成一个列表。 tu = (i for i in range(1000))#生成器对象 print(list(tu))
  它可以把生成器里面所有的元素都拿出来转换成列表。
  通过生成器表达式来定义生成器,一次想拿一个元素,怎么拿呢?
  Python 里面有个内置的函数,叫做next()。把生成器对象放进去,得到一个结果: # () 生成器表达式 tu = (i for i in range(1000))#生成器对象 a = next(tu) print(a) print(next(tu))
  交互环境中可以看到:
  它依次生成,要的时候,从生成器里面拿一个出来就行了。你要用的时候就去拿,它就一直生成,它就把里面所有的元素都取出来。 1.4 所有的元素都取出来之后,我又拿了一次,它会出现什么情况呢?
  会报错。
  生成器可以用来节约内存,提高代码性能。 生成器在于你什么时候用,你什么时候去取值。 2.函数里面,通过 yield 定义生成器
  除了生成器表达式可以创建生成器,还有另外一个方式。Python 关键字里面有个yield参数。
  yield这个关键字是用在函数里面的,这个关键字只能在函数里面用。
  函数定义完之后,只要在函数里面调用函数,那就会执行函数里面的代码。 def gen_fun():     print("清菡 加油") gen_fun()
  如果当一个函数里面,有yield这个关键字: def gen_fun():     yield     print("清菡 加油") gen_fun()
  这个时候再去运行这个函数,这个函数不会立即运行。 2.1 为什么不会立即运行呢?
  这个函数运行的时候,默认是没有写return的。 def gen_fun():     # yield     print("清菡 加油") res = gen_fun() print(res)
  如果函数里面出现了yield这个关键字,这个时候再看下。
  函数没有写return,调用函数,它里面,代码没有执行,但是有返回结果,返回的结果是:
  返回的是一个生成器。
  通过yield定义出来的这个函数,是个生成器函数。
  调用这个函数的时候,它会给你返回一个生成器对象。既然它是一个生成器对象,那么就可以通过next()来对它进行取值。 运行结果如下:# 通过 yield 定义生成器 def gen_fun():     yield     print("清菡 加油")  res = gen_fun()  #返回生成器对象 print(next(res))
  你看到输出结果是:None
  2.2 为什么是 None 呢?
  生成器生成的元素在yield关键字后面。 # 通过 yield 定义生成器 def gen_fun():     yield 100     print("清菡 加油")  res = gen_fun()  #返回生成器对象 print(next(res))
  再写 2 个yield: # 通过 yield 定义生成器 def gen_fun():     yield 100     print("清菡 加油")     yield 1000      yield 100100  res = gen_fun()  #返回生成器对象 print(next(res))
  生成器函数:  只有通过next()取值的时候,它才会执行函数里面的代码。
  next()一次,就运行到第一个yield这里,把这个结果返回出来。然后到这个地方,暂停了不动了,不会往下走了。
  如果在下面再next(), 从生成器里面再获取一个元素:
  print(next(res))
  直到等到下一个next()取值。当你下一次从生成器函数里面取值的时候,才会触发下一个yield。 # 通过 yield 定义生成器 def gen_fun():     yield 100     print("清菡 加油")     yield 1000      yield 100100  res = gen_fun()  #返回生成器对象 print(next(res)) print(next(res)) print(next(res))
  但是如果全部都生成完了,再去取一次,就会报错:
  因为里面已经没有元素了。
  以上,生成器只有通过这 2 种方式定义。

京东国际入驻小红书,一场新跨境消费的双赢每代人都有每代人独特的生活方式,而每一次生活方式的交替,都推动了大量原本小众的新兴品牌成长与破圈,带动新的社会潮流。在过去的几年中,潮玩新茶饮汉服剧本杀露营等领域接二连三地走向大众GeorgeChurch如何从被开除到成为哈佛全才科学家哈佛大学遗传学教授GeorgeChurchGeorgeChurch教授或许是哈佛大学商业化最成功的科学家之一。他是人类遗传学和生物技术领域的权威科学家,他以在基因组测序基因编辑合成2022年移动应用趋势报告应用表现的全球数据基准应用营销世界瞬息万变,而对于这个行业来说,2021年又是一个充满变革的年份。依靠应用进行娱乐活动获取信息和完成日常任务的用户数量创下历史新高,全球各地向移动端的转型仍在继续。新冠疫美媒印度不能挂断中国智能手机的电话来源环球时报美国华尔街日报中文网5月17日文章,原题印度不能挂断中国智能手机的电话印度正在调查中国智能手机制造商小米在印度的子公司。小米已向印度法院提起诉讼,指控印度打击金融犯罪的前3月中国手机市场出货量降三成,2022全年手机市场将迎巨大挑战要闻速览前3月中国手机市场出货量降三成2022年4月中国挖掘机销量同比下降47。3中汽协4月汽车销量118。1万辆,同比下降47。62022年4月中国动力电池装车量13。3GWh,超过智能手机!电动车成为钴最大需求来源去年,电动汽车首次超过智能手机和个人电脑,成为钴需求的主要来源。周二,国际钴业协会(cobaltInstitute)的一份报告显示,随着纯电动汽车和混合动力汽车销量翻番,汽车行业在魅族这么干了!其他手机厂商,怎么办?跟进还是观望?记得上一次魅族大事件还是在5年前,有人知道魅族这5年是怎么过的么?签对赌协议的没几个有好结果,魅族也不例外!笔者认为,魅族能活到现在已经是个奇迹!当年的魅族也是可以和小米掰一掰手腕手机行业已经出现衰退了5月16日,中国信通院发布2022年3月国内手机行业运行分析报告。2022年3月,国内手机市场总体出货量2150万部,同比下降40。5。这样断崖式的下跌意味着崩盘!此前,中芯国际1中国芯片率先将量子技术引入手机芯片,以差异化竞争优势挑战高通近日中国电信和国产手机芯片企业紫光展锐合作发布了一款手机,引入了量子安全技术,可以在手机侧对VOLTE语音数据进行加密,增强手机的信息安全性,这是国产手机芯片的又一个重大创新。量子2022年上半年,2000元3000元价位手机推荐,附手机选购指南618之前,这篇2000元3000元价格的手机推荐文终于赶出来了。除了推荐手机以外,本文还详细给大家提供了在选购手机时的思路,以及要查看的参数,希望可以对大家有所帮助。整理收集不易处理石油废物有了环保新方法原标题处理石油废物有了环保新方法俄罗斯托木斯克理工大学开发出处理石油开采过程中所产生危险废物的新方法。新法可在空气不足的情况下通过热分解使饱和的碳氢化合物分解为更小的往往不饱和的碳
高通898曝光或小米首发苹果新款M1X笔记本月底出货三星GalaxyZFold3ZFlip3折叠屏看点汇总Hello,大家好,这里是科技V报,我是龙二Pro,昨晚,三星召开全球新品发布会,正式推出了GalaxyZFold3和ZFli苹果新专利曝光这一次,干掉刘海前两天,一个新话题苹果新专利将消除iPhone刘海突降热搜。怎么回事呢?根据新浪科技的报道,苹果成功申请了一项名为可调节显示窗口的电子设备的专利。就是这项专利,解释了iPhone干iPadMini2021版或将在秋季发布,爆料称加量不加价最近有很多关于苹果的信息泄露,其中大部分是关于iPhone13的,预计将在9月发布,但也有一些关于其他产品的信息泄露,包括iPadMini。今年早些时候,有消息称苹果正在研发一款重我国首例女冷冻人展文莲后来怎样了?3年前,我国首例本土女冷冻人展文莲在医院被主治医生宣布死亡,而接下来等待她的不是死亡,而是另一场手术人体冷冻技术。据美国科学家阿伦德雷克介绍说死亡并不是一个瞬时概念,而且人们对死亡好礼送长辈,就选如意X2众志成城,抗击疫情。最近公园也渐渐对外开放了,老人家们在家闭关修炼少则也有七七四十九天了,是时候出来各显身手,带上你的神器,我们公园见,才艺舞艺一较高下。维尔晶如意X2,让您称心如地球绕着太阳转,为什么北斗七星启明星的位置基本不变?各种星球都有自己的归道,位置不变方位在转。北斗七星和启明星完全是不同的,北斗七星是恒星,是同太阳一样的恒星,距离我们十分遥远。而启明星就是金星,与地球一样围绕太阳运转的行星。而且,2021年您必须要了解的10大趋势性技术世界上唯一不变的永远是改变,这句话也适用于我们的职业生涯。如果您是一名技术研发人员,那很有必要了解2021年的10大趋势性技术,原因很简单,这些技术将会吸引大量的人才。众所周知,技本川智能深交所上市,掌握5G基站天线pcb核心技术图为本川智能的主要股东本川智能的基本情况江苏本川智能8月5日在深交所创业板上市,公司主要业务是印刷电路板,属于一家电子设备公司,旗下产品类型丰富,可以制作单面,双面,多层电路版,多旅行照,如何让表情更自然?不知道大家有没有这样的困扰帮小伙伴拍照的时候,不知道把人物放在画面的哪个位置才好。所以在这里,可以给大家分享一个小技巧。在景色中寻找自然的框架构图,比如后视镜窗户门充满几何元素的楼旅行中你最大的花费是在吃住行还是门票?我是一个己经退休的老年房车旅游爱好者,在我的房车自驾旅行过程中,吃住行门票四个方面最大的花费是还是行。一吃房车自驾旅行吃饭基本上都是自己做,车上有电,也有燃气灶,一般的饭菜在房车上魅族宣布接入华为鸿蒙系统,这应该是黄章最正确的决定安卓能有现在的成就一切源于苹果之外其它所有品牌都在使用,俗话讲众人拾柴火焰高就是这个道理。相对来讲华为鸿蒙要想做大做强必须有其它品牌支持才可以,如果华为自己一家使用是无法做到与苹果