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 ...
随机推荐
- [leetcode] 80. Remove Duplicates from Sorted Array II (Medium)
排序数组去重题,保留重复两个次数以内的元素,不申请新的空间. 解法一: 因为已经排好序,所以出现重复的话只能是连续着,所以利用个变量存储出现次数,借此判断. Runtime: 20 ms, faste ...
- LiteDB源码解析系列(4)跳表基本原理
LitDB里面索引的数据结构是用跳表来实现的,我知道的开源项目中使用跳表的还包括Redis,大家可以上网搜索关于Redis的跳表功能的实现.在这一章,我将结合LiteDB中的示例来讲解跳表. 1.跳表 ...
- antd pro中如何使用mock数据以及调用接口
antd pro的底层基础框架使用的是dva,dva采用effect的方式来管理同步化异步 在dva中主要分为3层 services models components models层用于存放数据 ...
- Java设计模式——工厂设计模式
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...
- C#的DateTime得到特定日期
//指定时间 DateTime dt = new DateTime(2016, 6, 1); //当前时间 DateTime dt = DateTime.Now; //本周周一 DateTime st ...
- Ubuntu16.04配置Django服务器环境
本环境是使用Ubuntu16.04+Django2.1.0+python3.6+uwsgi+nginx进行配置 1. 安装python3.6 Ubuntu16.04中原本安装的是python3.5,但 ...
- DBeaver之连接hive初体验
工作中第一次和搞大数据的同事配合,他让我用hue看hive数据,,由于本人英语菜逼,hue全英文的页面看不习惯,遂找了一个DBeaver工具,我也是第一次使用这个工具,好像挺可以的,可以连mysql, ...
- Extjs的使用总结笔记
一:Extjs自带验证 1.alpha //只能输入字母,无法输入其他(如数字,特殊符号等) 2.alphanum//只能输入字母和数字,无法输入其他 3.email//email验证,要求的格式是& ...
- strus 上传文件
(1) action代码 package comSys.struts.articleManager; import java.io.File; import java.io.FileInputStre ...
- 【vue】------ 路由创建 ------ 【William】
路由常用的配置项: path:路由请求的路径 component:路由匹配成功后需要渲染的组件或者页面 tag:改变组件内部渲染的元素 假设组件内部渲染的是a标签 tag="li" ...