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 ...
随机推荐
-
python 数据的拷贝
# -*- config=utf-8 -*- #数据的拷贝 a=[1,2,3,4,5,6,"a","C"]; b=a;# a 与 b 的地址空间相同 a.app ...
-
iOS -数据库网络之xml解析之第三方解析XML
1.导入第三方插件(GDalaXMLNode) 2.第三方插件配置 libxml/tree.h 路径 在项目属性中--Bulid Settings中搜索 Search --Search ...
-
齐B小短裙
女模周蕊微博引关注 火了齐B小短裙毁了干爹[图]_网易新闻中心 齐B小短裙
-
迁移 Qt4 至 Qt5 的几个主要环节(数据库插件别拷错了地方)
Qt5推出一段时间了,经过了试用,虽然还存在一些问题,比如Designer 缺少 WebView 和 ActiveQt 的UI工具,此外 WebKit 的 Release 版本似乎和Visual-St ...
-
【转】认识物理I/O构件- 主机I/O总线
在数据离开系统内存总线后,它通常传输到另一条总线,即主机I/O总线.在今天的产品中,最常见的主机I/O总线是PCI总线,但也存在着几种其他的总线,如S -总线,EIS A总线及VME总线.主机I/O总 ...
-
spring boot新建项目问题总结
1.启动报:Unregistering JMX-exposed beans on shutdown 原因:以来的Tomcat没有启动 解决办法:在pom.xml加入依赖 <dependency& ...
-
Python内置模块之subprocess
import subprocess ret = subprocess.Popen('netstat -ano',shell=True,stdout=subprocess.PIPE,stderr=sub ...
-
python学习之——习题一
习题一:使用while循环输入1 2 3 4 5 6 8 9 10 (不含7) 首先想到,先使用while循环打印出1-10数字,然后再将数字“7”剔除. # 先打印出1-10 n = 1 whi ...
-
令人疑惑的 std::remove 算法
摘自<Effective STL>第32条 remove的声明: template<class ForwardIterator, class T> ForwardIterato ...
-
VB.NET的MsgBox
一.可用按钮(指定消息框显示哪些按钮) MsgBoxStyle.OkOnly = vbOKOnly = 0(确定按钮) MsgBoxStyle.OkCancel = vbOKCancel = 1(确定 ...