python基础 Day12
python Day12
生成器python社区,生成器与迭代器看成一种。生成器的本质就是迭代器。
区别:生成器是我们自己用python代码构建的数据结构。迭代器都是提供的,或者转化得来的。
获取生成器的三种方式:
生成器函数
def func():
print(111)
print(222)
yield 3
ret=func()
print(next(ret))
##一个next对应一个yeid
生成器表达式
python内部提供一些
Return和yield的区别
return :函数中只存在一个return结束函数,并且给函数的执行者返回值
yield:只要函数中有yield那么它就是生成器函数而不是函数了,生成器函数中可以存在多*个yield,一个yield对应一个next,yield不会结束生成器函数
###以生产包子的模型为列子,迭代器是直接生成5000个包子
def func():
l1=[]
for i in range(1,5001):
l1.append(f'{i}号包子')
return l1
print(func())
def gen_fuc():
for i in range(1,5001):
yield f'{i}号包子'
ret=gen_fuc()
#这里需要100个包子
for i in range(100):
print(next(ret))
#满足惰性机制,保留循环
yield from将返回的列表变成了迭代器
def func():
l1=[1,2,3,4,5]
yield from l1
ret=func()
print(next(ret))
print(next(ret))
列表推导式(用一行代码构建一个比较复杂并且有规律的列表)
循环筛选模式:[变量(加工后的变量)for 变量 in iterable]
list=[i*3 for i in range(11)]
print(list)
筛选模式:[变量(加工后的变量)for 变量 in iterable if 条件]
list=[i for i in range(11) if i%2!=0]
print(list)
多循环模式
##将列表中含有两个ee的字符串筛选出来
name=[["sfdsferwerwew","rewrew3","dfsfsfff"],["Ffdsdfsf","3rewttreedsd","fseww"]]
list_name=[j for i in name for j in i if j.count("e")==2 ]
print(list_name)
生成器表达式(与列表推导式的写法几乎一模一样只有写法中将[],换成())
list=[1,23,4]
list=(i for i in list)
print(next(list))
##结果是 1
##有点是十分的节省内存
内置函数
eval 剥去字符串的外衣运算里面的代码
s1="1+3"
print(eval(s1))
###结果是 4
作业
有数据x={"name":"zhuxiayu","value":[{'timestmp':1343252532.09,"Value":100},{'timestmp':23252532.09,"Value":200}]}通过列表推导式转化为[[1343252532.09, 100], [23252532.09, 200]]
x={"name":"zhuxiayu","value":[{'timestmp':1343252532.09,"Value":100},{'timestmp':23252532.09,"Value":200}]}
list2=[[dit["timestmp"],dit["Value"]] for dit in x["value"]]
print(list2)构建一个列表,列表里面是三种不同的尺寸,每个尺寸都有两种颜色
colors=["white","black"]
sizes=["S","M","L"]
list=[ (size,color)for size in sizes for color in colors]
print(list)
###结果:[('S', 'white'), ('S', 'black'), ('M', 'white'), ('M', 'black'), ('L', 'white'), ('L', 'black')]看代码求结果
def demo():
for i in range(4):
yield i
g=demo()
g1=(i for i in g)
g2=(i for i in g1) print(list(g1))
print(list(g2))
###结果[0, 1, 2, 3]
## []
python基础 Day12的更多相关文章
- Python之路【第二篇】:Python基础
Python基础 对于Python,一切事物都是对象,对象基于类创建 所以,以下这些值都时对象:"zhurui".22.['北京','上海','深圳'],并且是根据不同的类生成的对 ...
- python之最强王者(2)——python基础语法
背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...
- Python开发【第二篇】:Python基础知识
Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python之路3【第一篇】Python基础
本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...
- 进击的Python【第三章】:Python基础(三)
Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...
- 进击的Python【第二章】:Python基础(二)
Python基础(二) 本章内容 数据类型 数据运算 列表与元组的基本操作 字典的基本操作 字符编码与转码 模块初探 练习:购物车程序 一.数据类型 Python有五个标准的数据类型: Numbers ...
- Python之路【第一篇】python基础
一.python开发 1.开发: 1)高级语言:python .Java .PHP. C# Go ruby c++ ===>字节码 2)低级语言:c .汇编 2.语言之间的对比: 1)py ...
- python基础之day1
Python 简介 Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python为我们提供了非常完善的基础代码库,覆盖了 ...
随机推荐
- python中的and与or
一.问题起源: main=None main=main or sys.modules["__main__"].main main返回的是后面一个值,即 sys.modules[&q ...
- Python read和write方法
Python read和write方法: read(): 从文件中读取字符串 注:Python 字符串可以是二进制数据,而不仅仅是文字. 语法: 文件对象.read([count]) count:打开 ...
- SpringBoot动态注入Bean
目的: 在程序运行期间,动态添加Bean进入到Spring容器. 目前使用到的场景: 对当当网的ElasticJob进行封装,通过自定义注解@ElasticJob的方式开启分布式定时任务. 当所有的B ...
- 时间序列ARIMA模型
时间序列ARIMA模型 1.数据的平稳性与差分法 让均值和方差不发生明显的变化(让数据变平稳),用差分法 2.ARIMA模型-----差分自回归平均移动模型 求解回归的经典算法:最大似然估计.最小二乘 ...
- PHP date_timestamp_get() 函数
实例 返回今天的日期和时间的 Unix 时间戳: <?php$date=date_create();echo date_timestamp_get($date);?> 运行实例 » 定义和 ...
- PHP registerXPathNamespace() 函数
实例 为下一个 XPath 查询创建命名空间上下文: <?php$xml=<<<XML高佣联盟 www.cgewang.com<book xmlns:chap=" ...
- 如果你大学上过编程课,一定被老师提醒过:不要使用 goto 语句!
如果你上过编程课,一定被老师提醒过:不要使用goto语句! 因为goto语句不仅让代码的可读性很差,随意的跳出还会给程序带来安全隐患. 但是这种几乎被现代编程明令禁止的语句,在计算机诞生之初却司空见惯 ...
- [SCOI2007]降雨量 线段树和区间最值(RMQ)问题
这道题是比较经典的 \(RMQ\) 问题,用线段树维护是比较简单好写的.比较难的部分是判断处理.如果没有想好直接打代码会调很久(没错就是我).怎么维护查询区间最大值我就不再这里赘述了,不懂线段树的 ...
- mybatis plus 更新值为null的字段
转载请注明出处: 由于mybatis plus调用默认的更新操作方法时,不更新值为空,null或默认值等得属性字段,只更新值为非null,非空非默认值的属性字段. 以下为mybatis plus sa ...
- 为写程序而生的连字字体 Fira Code
Fira Code,等宽的编程连字字体 **等宽 ** 是指所有字符的宽度相同,如: W 和 i 用一样的宽度去显示 连字(ligatures)为文字排印的一个特性,比如「f」和「 i」放在一起的时候 ...