Python Day15

一 生成器的调用方法

    生成器里面的值的只能按顺序调用一次,只能向前,不能后退。

     生成器里面的值只是在调用的时候才被执行。

def aa():
    yield from [1,2,3]
a=aa()
for i in a:
    print(i)
    print(list(a))

输出结果

1
[2, 3]

    

  send:1 和next的用法一样,执行生成器,执行时必须带一个参数

    2 send和next的起止位置完全相同,在生成器send关键字执行开始之前,需要先用next激活这个生成器。

    3 send可已将一个值当作信号量传递到函数中去

def aaa():
    print(123)
    a=yield 1
    print(a)
    b=yield 2
    print(b)
    c=yield 3
    print(c)
    yield 4
aa=aaa()
print(aa.__next__())
print(aa.send(10))
print(aa.send(20))
print(aa.send(30))

输出结果
123
1
10
2
20
3
30
4

如果yield前面有个变量的话,就用send执行,并传入一个值。

  只要用send传递参数的时候,必须在生成器中海油一个未被返回的yield

二 列表推导式

  列表推导式就是将一些能简单执行的代码,用更简单的代码实现。

  列表推导式格式:print([返回结构 执行对象  if判断条件])

例一:30以内所有能被3整除的数

multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

例二:找到嵌套列表中名字含有两个‘e’的所有名字

names = [[‘Tom‘, ‘Billy‘, ‘Jefferson‘, ‘Andrew‘, ‘Wesley‘, ‘Steven‘, ‘Joe‘],
         [‘Alice‘, ‘Jill‘, ‘Ana‘, ‘Wendy‘, ‘Jennifer‘, ‘Sherry‘, ‘Eva‘]]

print([name for lst in names for name in lst if name.count(‘e‘) >= 2])  # 注意遍历顺序,这是实现的关键

列表表达式格式:

  

# print([i for i in range(30) if i%3==0])

而生成器表达式就和列表推导式差不多,就是将列表推导式的中括号换成小括号,这就是生成器表达式。

  生成器 表达式:生成器=(返回结构 执行对象  if判断条件)

 print=((i for i in range(30) if i%3==0))

面试题:

# def aa(n,i):
#     return n+i
# def bb():
#     yield from range(4)
# b=bb()
# for n in [1,10,5]:
#     b=(aa(n,i) for i in b)
# print(list(b))     [15,16,17,18]
# def aa(n,i):
#     return n+i
# def bb():
#     yield from range(4)
# b=bb()
# for n in [1,10,5]:
#     g=(aa(n,i) for i in b)
# print(list(g))    [5,6,7,8]

注意:这两个执行结果不同

  在这里的列表元素中的元素有几个,就会调用几次,只有在调用的时候值才会起作用,所以只用最后一个元素的值才能起作用。

原因:如果变量名是执行的对象,那么没执行一次,就会叠加一次

  而变量名不是执行的对像,没执行一次就会从头开始执行进行下次执行,因此两次执行的结果不同

三 其他内容

 1 字典推导式:主要是用于在字典,将一些简单的代码更简单化。

d={‘k1‘:1,‘k2‘:2}
print({d[i]:i for i in d })

 2 集合推导式:和列表推导式功能差不多,但是他可以去掉元素的重复。

注意1 :尽量用推导式简化代码,怎强代码的可读性

注意2:如果推导式过于复杂,就不要用推到式,还是用普通的python代码就好。

时间: 2024-10-25 08:30:19

Python Day15的相关文章

python—day15

软件目录规范.logging日志模块.json&pikcle.os模块   软件目录规范: 什么是包,为什么要用包: packgae就是一个包含有__init__.py文件的文件夹,所以我们用backage是为了将文件.模块组织起来. logging模块: 日志级别: DEBUG:10 INFO:20 WARING:30 ERROR:40 CRITICAL:50 logging的四个重要对象: logger:产生日志的对象: filter:过滤日志的对象(不常用) handler:接受日志然后控

Python Day15(CSS)

一.CSS概述 1.简介 css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. 存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点. 语法:style = 'key1:value1;key2:value2;' 在标签中使用 style='xx:xxx;' 在页面中嵌入 < style type="text/css"> </style > 块 引入外部css文件 必要性:美工会对页面的色彩搭配和图片的

Python基础day-13[模块:re,subprocess未完]

re(续): re默认是贪婪模式. 贪婪模式:在满足匹配时,匹配尽可能长的字符串. import re s = 'askldlaksdabccccccccasdabcccalsdacbcccacbcccabccc' res = re.findall('abc+',s) print(res) res = re.findall('abc+?',s) #在规则后面加?来取消贪婪模式. print(res) 执行结果: D:\Python\Python36-32\python.exe E:/Python

13 Python 函数进阶

代码在运行伊始,创建的存储"变量名与值的关系"的空间叫做全局命名空间,在函数的运行中开辟的临时的空间叫做局部命名空间 命名空间和作用域 命名空间的本质:存放名字与值的绑定关系 1 >>> import this 2 The Zen of Python, by Tim Peters 3 4 Beautiful is better than ugly. 5 Explicit is better than implicit. 6 Simple is better than

python开发学习-day15(前端部分知识、web框架、Django创建项目)

s12-20160430-day15 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* BLOCKS =============================================================================*/ p, blockquote, ul, ol, dl, table, pre { margin

Python之路,Day15 - Django适当进阶篇

Python之路,Day15 - Django适当进阶篇 本节内容 学员管理系统练习 Django ORM操作进阶 用户认证 Django练习小项目:学员管理系统设计开发 带着项目需求学习是最有趣和效率最高的,今天就来基于下面的需求来继续学习Django 项目需求: 1.分讲师\学员\课程顾问角色,2.学员可以属于多个班级,学员成绩按课程分别统计3.每个班级至少包含一个或多个讲师4.一个学员要有状态转化的过程 ,比如未报名前,报名后,毕业老学员5.客户要有咨询纪录, 后续的定期跟踪纪录也要保存6

Python学习day15 CMDB

Created on 2017年6月6日 @author: louts 第1课 上节作业 10minutes 显示页面时,只有登录了才能显示,没登录会弹出一个登录框,就是一个遮挡层 第2课 自动化之路和CMBD地位 22minutes CMDB: 自动安装 配置管理系统 CMDB运维资产管理系统(所有系统都需要调用这里的信息)---核心所在 highchats echats CMDB: 采集硬件数据 API汇报----开放给所有外部,收集信息,通过API写入到数据库 页面管理 大概流程:Clie

python小白-day15 Django基础

Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. django简介 Django是一个开放源代码的Web应用框架,由Python写成.采用了MVC的软件设计模式,即模型M,视图V和控制器C.它最初是被开发来用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站的,即是CMS(内容管理系统)软件.并于2005年7月在BSD许可证下发布.这套框架是以比

Python自动化开发课堂笔记【Day15】- Django基础

WEB框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. 对于所有的Web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端. 最简单的Web应用就是先把HTML用文件保存好,用一个现成的HTTP服务器软件,接收用户请求,从文件中读取HTML,返回. 如果要动态生成HTML,就需要把上述步骤自己来实现.不过,接受HTTP请求.解析HTTP请