python 12 生成器
1. 生成器 yeild
生成器的本质就是一个迭代器
迭代器和生成器的区别: 迭代器是Python中内置的一种节省空间的工具,是python自带的;生成器是程序员自己写的。
def func():
if 3>2:
yield "你好" # 停止,会记录执行到的位置
if 4>2:
yield "我好"
yield "大家好"
g = func() # 产生一个生成器
print(g.__next__())
print(g.__next__())
print(g.__next__()) # 可写成 print(next(g))
# 可循环打印
for i in g:
print(i)
定义一个生成器:
基于函数,
函数体中存在yield就是一个生成器
函数名() 就产生一个生成器
生成器:
节省空间 -- 惰性机制
不能逆行
一次性
一个next对应一个yield 可以多写yiled,返回多次
#生成器应用场景:
def func():
lst = [1,3,5,7,9]
yield from lst # from 将一个可迭代对象的元素逐个返回
g = func()
for i in g:
print(i) # 1 3 5 7 9
def func():
lst = [1,2,3,4,5,6,7,8,9]
yield from lst
count = 9
while count:
yield count # yield能够临时停止for、while循环
count -= 1
g = func()
for i in g:
print(i)
2. 推导式
2.1 列表推导式:
#[变量(加工后的变量) for循环 加工方式]
print([i for i in range(20) if i%2 ==0])
2.2 生成器推导式:
# (变量(加工后的变量) for循环 加工条件)
g = (i for i in range(50) if i % 2 == 1)
for i in g:
print(i)
2.3 字典推导式:
# {键:值 for循环 加工条件}
print({i:i+1 for i in range(10) if i % 2 == 0})
2.4 集合推导式:
# {变量(加工后的变量) for循环 加工条件}
print({i for i in range(10) if i % 2 == 0})
3. 内置函数(一)
eval():执行字符串类型的代码,并返回最终结果
exec():执行字符串类型的代码
s = """
for i in range(10):
print(i)
"""
print(exec(s)) # 循环打印
hash():获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。
help():函数用于查看函数或模块用途的详细说明。
callable():函数用于检查一个对象是否是可调用的。
int:函数用于将一个字符串或数字转换为整型。
float:函数用于将整数和字符串转换成浮点数。
complex():函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数.
bin:将十进制转换成二进制并返回。
oct:将十进制转化成八进制字符串并返回。
hex:将十进制转化成十六进制字符串并返回。
divmod():计算除数与被除数的结果,返回一个包含商和余数的元组 (a // b, a % b)。
round(5.323,2):保留浮点数的小数位数,默认保留整数。
pow():求x**y次幂。(三个参数为x**y的结果对z取余)
bytes:用于不同编码之间的转化。
ord():输入字符找当前字符编码的位置
chr:输入当前编码的位置数字找出其对应的字符
repr:返回一个对象的string形式(原形毕露)。
all:可迭代对象中,全都是True才是True
any:可迭代对象中,有一个True 就是True
globals():查看全局空间的变量,以字典形式体现
local():查看当前空间的变量
python 12 生成器的更多相关文章
- python ---12 生成器 推导式
一.生成器 函数中有yield 的就是生成器函数(替代了return) 本质就是迭代器 一个一个的创建对象 节省内存 1.创建生成器 最后以yield结束 1. 通过⽣成器函数 2. ...
- 十二. Python基础(12)--生成器
十二. Python基础(12)--生成器 1 ● 可迭代对象(iterable) An object capable of returning its members one at a time. ...
- python 迭代器 生成器
迭代器 生成器 一 什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个StopIteration异常,以终止迭代 (只能往后走不能往前 ...
- python中和生成器协程相关的yield之最详最强解释,一看就懂(一)
yield是python中一个非常重要的关键词,所有迭代器都是yield实现的,学习python,如果不把这个yield的意思和用法彻底搞清楚,学习python的生成器,协程和异步io的时候,就会彻底 ...
- Python中生成器和迭代器的区别(代码在Python3.5下测试):
https://blog.csdn.net/u014745194/article/details/70176117 Python中生成器和迭代器的区别(代码在Python3.5下测试):Num01–& ...
- python 列表生成器
python 列表生成器 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式. 一个循环 在C语言等其他语言中,for循环一般是这样的 ...
- python中和生成器协程相关的yield from之最详最强解释,一看就懂(四)
如果认真读过上文的朋友,应该已经明白了yield from实现的底层generator到caller的上传数据通道是什么了.本文重点讲yield from所实现的caller到coroutine的向下 ...
- python中和生成器协程相关yield from之最详最强解释,一看就懂(二)
一. 从列表中yield 语法形式:yield from <可迭代的对象实例> python中的列表是可迭代的, 如果想构造一个生成器逐一产生list中元素,按之前的yield语法,是在 ...
- Python的生成器进阶玩法
Python的生成器进阶玩法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.yield的表达式形式 #!/usr/bin/env python #_*_coding:utf-8 ...
随机推荐
- 【带着canvas去流浪(13)】用Three.js制作简易的MARVEL片头动画(下)
目录 一. 模型的制作 1.1 生成字体模型 1.2 多表面贴图 二. 镜头及动画 三. 大作业总结 示例代码托管在:http://www.github.com/dashnowords/blogs 博 ...
- 基于ng-zorro的ASP.NET ZERO前端实现
Abp官方提供的企业版(ASP.NET ZERO)[以下简称Zero]模板中前端使用的是Metronic,本篇博客介绍使用ng-zorro和ng-alain替换官方前端,以及使用官方生成器自动生成代码 ...
- windows和linux下如何对拍
对拍是各种计算机考试检查时必备工具,实际上十分强大,只要你的暴力没有写错就没有问题. 对拍的意思:(怎么有点语文课的意思雾) 对:看见'对'就可以知道有两个. 拍:就是把两个程序结果拍在一起,对照(有 ...
- 模板配置教程:Phpcms v9怎么更换模板
先分享下大概的步骤: 1.上传模版文件到服务器: 2.在站点管理 里边[模板风格配置]选择新模板: 3.设置不同模型对应模板: 4.修改现有的栏目,匹配新模板: 5.更新栏目缓存.系统缓存,更新HTM ...
- java 第一章
1.java四要素 public static void main 2.java 的历史 and soso 3.知道java的格式和要求 4.知道如何配置环境变量 5.java的编写: a.大括号 ...
- R语言学习笔记——C#中如何使用R语言setwd()函数
在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//")> setwd("e:\桌面\")> s ...
- Loadrunner参数(摘)
一.占有率分析 1. 平均事务响应时间 Average Transaction Response Time 优秀:<2s 良好:2-5s 及格:6-10s 不及格:>10s 2. 每秒点击 ...
- python 实现爬取网站下所有URL
python3 实现爬取网站下所有URL 获取首页元素信息: 首页的URL链接获取: 遍历第一次返回的结果: 递归循环遍历: 全部代码如下: 小结: python3.6 requests && ...
- Gunicorn-Django部署
1. 简单部署 1. sudo pip3 install gunicorn 2. cd 到django项目中 sudo python3 manage.py migrate 3.启动服务:sudo py ...
- c#异常后重试操作
private void TryConnect(System.Action action) { int retries = 3; whi ...