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

测开之数据类型第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 种方式定义。

他就是电影音乐的代名词,意大利作曲大师EnnioMorricone很久以来,一直想写一个关于电影音乐大师的系列文章,向大家介绍在电影音乐史上重要的配乐大师。这个系列会介绍大致30位大师级的电影配乐家,大约为老一辈的10位,现在已经功成名就的10位网络电影营销战火再起,三平台联手献礼我们的新生活7月23日,一部名为我们的新生活的现实题材网络电影在爱奇艺腾讯视频优酷三平台拼播上线。在影片中,电影所呈现的时代发展背景比较大,从记忆中的汶川大地震进行中的5G通讯技术革命新民法典脱下绅士面具,台积电被美国盯上了,要求45天内交出商业机密随着全球缺芯潮的持续,世界各国都难逃此劫,纷纷找办法进行补救。就连美国也深受影响,为了解决芯片短缺的局面,如今它已经急疯了,脱下绅士面具,狮子大开口了。据韩国媒体报道称,美国要求台好消息!余承东带来3个华为新动态,每一项都令美国发出感叹这两年的华为可谓是多灾多难,发展遭遇了多重限制。可坚强如华为,沉寂许久的它并没有停止发展的脚步。近期华为消费者业务CEO余承东在2021华为开发者大会上宣布了三个关于华为的好消息,高温天大金毛水中游泳降温叼水瓶西瓜皮上岸被市民赞为环保狗陕西西安气温高达40度,很多市民来到灞河边游泳,一只大金毛也酷热难耐跳进河里游泳降温。这只大金毛看到河里有水瓶子,西瓜皮等垃圾就叼上岸来,人们纷纷议论西安也有一只环保狗。大金毛将瓶游客违规吸烟烟头扔到护栏外胡大姐冒险捡拾如果是你的亲人在捡还扔吗7月的甘肃省张掖市七彩丹霞旅游景区正值旅游高峰期,一号观景台是景区中最大的观景台,49岁的胡大姐一个人负责整个一号观景台的清洁打扫工作。她不仅要负责清理观景台内的卫生,还要捡拾观景彩绘集装箱式音乐创客街区亮相西安创客聚集好看好玩有活力位于陕西省西安市曲江创客大街上的音乐创客街区是全球首个集装箱式音乐创客主题社区,将音乐元素融入了创客主题。曲江音乐创客街区是由一个个集装箱组成,与创客的工匠精神不谋而合。极简的工业实拍一小时观察美食街上的一个垃圾桶经历了什么每个城市中都存在着无数垃圾桶,这些垃圾桶始终存在于各个角落,是我们生活中不可或缺,却又极易被忽视的东西。但对于靠拾荒生存的人来说,这些垃圾桶非常重要,他们每天在这些被我们忽视的垃圾热播剧白鹿原中的人物纷纷走上美食招牌嘉轩大不代言油泼面改吃鱿鱼随着电视剧白鹿原的热播,越来越多的人喜欢上了白鹿原的风土人情。电视剧的拍摄地之一白鹿原影视城吸引了众多游客和剧迷前来参观,许多白鹿原中的人物也纷纷走上了招牌,成为这里店铺招揽生意的喝十几瓶水却基本不用上厕所40度高温下工人焊接刷漆用汗水洗衣服陕西西安持续发布高温红色预警,温度超过40度,很多户外劳动者仍然在坚持工作。西安北关正街,一些工人正在烈日下进行绿化墙安装工程。他们做着焊接刷漆安装等工作,一点一滴的给街道点缀绿色鹿子霖在白鹿原的家中摆了一桌酒菜欢迎游客剧迷来品尝陕西西安的白鹿原影视城在电视剧白鹿原热播后,迎来了越来越多的游客和剧迷前来参观游玩。电视剧白鹿原中鹿子霖的家,鹿子霖这个角色收获了许多观众的喜爱。院中还摆了一桌仿真酒菜,犹如电视剧
微信总是卡顿不流畅,只需把卡顿阈值调到2000就可以,好用方便分享生活小妙招,共享科技新生活!大家好,欢迎来到今天的知识分享!我是你们的好朋友小俊!我们在使用微信聊天或者打开微信的时候,经常会发现并不流畅甚至有时候还会引起卡顿问题!其实我们只Fossil发布2021年新款智能手表2022年之前不会搭载WearOS3Fossil宣布了其2021年秋季推出的运行WearOS的智能手表系列,它称之为Gen6Touchscreen。与第5代Fossil手表一样,第6代将有几种不同的款式和尺寸,也会有出差办公随身携带WiFi,蒲公英4G智能组网路由器X4C作为经常出差的公关行业人员,经常在发布会和活动现场进行传播。不过活动现场因为人非常多,网络也很差,经常断断续续,导致重要消息发不出去,需要及时发布的新闻也错过了最佳发布时机。我在想再拓新境!汉EV旗舰型加推5G丹拿智能音乐座舱升级包2021年8月29日,比亚迪携DiLink4。0(5G)和为汉EV四驱高性能版旗舰型倾力打造的5G丹拿智能音乐座舱升级包,在成都车展正式上市。5G丹拿智能音乐座舱升级包包含5G速联阿里因赵薇再上热搜,放支付宝的钱真危险了?前段时间的阿里女员工事件,大家应该还有印象,阿里狠狠地刷了一波存在感。然而没想到,这事还没结束,阿里又有新瓜冲上了热搜第一!这个热搜的话题名为支付宝里的钱要取出来吗?很多人表示,我市场监管总局依法审查搜电收购街电经营者集中案,调查美团收购摩拜未依法申报8月30日晚,国家市场监督管理总局官网发文称,对搜电收购街电经营者集中案依法审查,并对美团(03690。HK)收购摩拜未依法申报开展调查工作。下一步,市场监管部门将进一步加大对共享国产巨头力挺华为,鸿蒙新机接连发布,芯片也只是时间问题在目前国产科技行业的发展历程当中,有两点目前是我国的短板所在,一个是芯片,另一个则是系统。芯片方面一直被国外的英特尔AMD高通等企业垄断,系统方面也是被微软谷歌苹果等巨头霸占。我国OPPO手机用户注意了!!工信部通报这些APP应用在侵害你的权益据工信部网站消息关于侵害用户权益行为的APP通报关于侵害用户权益行为的APP通报。整理OPPO手机里侵害用户权益行为的APP。贝瓦儿歌APP贝瓦儿歌APP所属公司芝兰玉树(北京)科纳米级净化技术高效双倍除醛,斯帝沃空气净化器成为家庭卫士斯帝沃空气净化器在国内抢滩登陆后就打出了精工技术高效除醛的霸气招牌,产品的精工品质究竟体现在哪呢?斯帝沃是英国品牌,得益于得天独厚的产业以及技术优势,英国在空气净化器的研发和生产方似笔记本一般轻薄的电磁炉,是如何让年轻人愿意进厨房的?在这个看脸的时代,让人过目不忘的东西更能打动人心。无论是人的长相还是使用的产品,颜值高总能获得的关注度,这一点在很多时候都是毋庸置疑的。如今颜值优先论也开始适用于厨房家电,据权威平发布5个月降至1969元,90Hz6400万三摄33W立体双扬智能手机行业竞争激烈,一款手机发布没多久就出现降价,下半年各大手机厂商也是推出了多款机型,因此上半年发布的很多机型纷纷降价,今天要说的这款手机是一款中端机,来自小米的小米11青春版