新手Python第四天(生成器)
Python 生成器
生成器和生成表达式
a=[i*2 for i in range(10)]#生成表达式
b=(i*2 for i in range(10))#生成器
生成器的特点:优点(不占用内存空间,生成速度快),缺点(不能切片,只能保存当前值,前值不能获取)
Python 创建生成器
#1.生成器
b=(i*2 for i in range(10))
#2.函数生成器
def func(x):
count=0
while count<x:
yield count #保存当前函数的中断状态(断点)
count += 1
f=func(10)
Python 生成器的方法
print(f.__next__())#调用下一个元素
print(f.send(1))#发送一个元素
Python 生成器的循环
for i in (i*2 for i in range(10)):
print(i)
Python yield
def func1(name):
print('%s准备吃东西了'%(name))
while True:
food=yield #yield卡住跳出函数,send发送数据后继续执行函数
print('%s被%s吃掉了'%(food,name))
def func2(food):
f = func1('小明') #创建顾客
f2= func1('小李')
f.__next__() #启动客户,到yield跳出程序
f2.__next__()
for i in range(10):
f.send(food) #唤醒yield程序并传递food,继续执行print
f2.send(food)
func2('鱼')
Python 迭代器
可迭代对象和迭代器
可迭代对象:可以用for循环的对象都是可迭代对象,如列表元组字典字符串
迭代器:内部有__next__()方法的对象都是迭代器,如生成器,但迭代器不是生成器
Python 迭代器的转换
#可迭代对象变成迭代器
iter([1,2,3])
Python 迭代器和迭代对象的判断
from collections import Iterable
from collections import Iterator
print(isinstance([1,2,3,4],Iterable))#判断是不是可迭代对象
print(isinstance(iter([1,2,3,4]),Iterator))#判断是不是迭代器
Python 迭代器的方法
print(iter([1,2,3]).__next__()) #调用下一个
Python 迭代器循环
for i in iter([1,2,3,4]):
print(i)
#while循环不建议使用,迭代器是无穷尽的无法计算最后一个值,只有用try去判断
Python 内置函数(判断)
print(bool(1))#布尔值判断
print(all([0,1,1]))#全部为真才为真
print(any([0,1,1]))#有一个为真才为真
print(callable([]))#是不是一个方法,是不是可以调用
Python 内置函数(转换)
for i in enumerate(['a','b','c']):#获取下标和内容
print(i)
print(bin(11))#十进制转二进制
print(oct(11))#十进制转八进制
print(hex(15))#十进制转十六进制
bytes('a',encoding='utf-8')#转化成二进制格式
tuple() # 列表变成元组
frozenset([1,2,3,4])#不可变集合,和元组一样
chr(99)#返回ascii对应的字符
float()#转化浮点
repr(range(10))#把对象转化成字符串
print(type(ascii([1,2,3])))#变成一个字符串的形式,没什么用
a=bytearray('abcd',encoding='utf-8')
a[0]=99#字符串和二进制格式不可以修改,但这个可以修改
print(a)
Python 内置函数(计算)
print(pow(2,5))#次方
print(abs(-1))#计算绝对值
print(divmod(5,2))#返回商和余数
print(sum([1,2,3,4]))#对一个列表求和
round(1.2222,2)#保留小数点后几位
print(max([1,2,3]))#返回最大值
print(min([1,2,3]))#返回最小值
for i in filter(lambda n:n<5,range(10)):#过滤
print(i)
for i in map(lambda n:n<5,range(10)):#返回前面的结果
print(i)
Python 内置函数(查看)
help()#帮助
print()#打印
print('{name}'.format(name=''))#格式化输出
type('a')#查看数据类型
print(dir({}))#查看内置方法
vars()#返回一个对象所有的属性名
globals()#打印全局变量的key和value
def func1():
a=1
print(locals())#打印全部的局部变量
func1()
Python 内置函数(列表和迭代器)
reversed([1,2,3])#翻转
print(sorted([2,1,3,4]))#排序
print(sorted({2:22,1:33,}.items()))#key排序
print(sorted({2:22,1:33,}.items(),key=lambda x:x[1]))#value排序
zip([1,2,3,4],['a','b','c','d'])#拉链
range(10)#从0取到10不包括10的一个迭代器
next()#迭代器使用的next方法
list=[1,2,3,4,5,6,7,8,9,10]
print(list[slice(2,5)])#对一个类表切片 没啥用
Python 内置函数(其他)
#eval()#执行简单的代码块
#exec()#执行多段代码块
__import__('auth')#字符串导入一个模块
#exit()#退出
#hash()#加密
code='''for i in range(10)'''
#compile()#编译 没啥用
complex()#复数用不到
import functools
print(functools.reduce(lambda a,b:a+b,range(10)))#求和
#super
#memoryview
#property
#credits()
#copyright()
#delattr()
Python json写文件(跨平台)
import json
data={'user':'admin','password':''}
f_json=open('json.text','w')
#写入json文件
json.dump(data,f_json)
#f_json.write(json.dumps(data))
f_json.close()
Python json读取文件
import json
f_json=open('json.text','r')
#json读文件
load_json=json.load(f_json)
#load_json=json.loads(f_json.read())
f_json.close()
Python pickle写文件(限定python)
import pickle
data={'user':'admin','password':''}
f_pickle=open('pickle.text','wb')
#写入文件
pickle.dump(data,f_pickle)
#f_pickle.write(pickle.dumps(data))
f_pickle.close()
Python pickle读取文件
import pickle
f_pickle=open('pickle.text','rb')
#读取文件
data_load_pickle=pickle.load(f_pickle)
#data_load_pickle=pickle.loads
f_pickle.close()
python学习途径
新手Python第四天(生成器)的更多相关文章
- Python 第四篇:生成器、迭代器、装饰器、递归函数与正则表达式
一:生成器:Generator,可以理解为是一种一个函数产生一个迭代器,而迭代器里面的数据是可以通过for循环获取的,那么这个函数就是一个生成器,即生成器是有函数生成的,创建生成器使用()表示,比如g ...
- Python(四)生成器 和 杨辉三角
学习链接: http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177992 ...
- 初学 Python(十四)——生成器
初学 Python(十四)--生成器 初学 Python,主要整理一些学习到的知识点,这次是生成器. # -*- coding:utf-8 -*- ''''' 生成式的作用: 减少内存占有,不用一次性 ...
- Python进阶(四)----生成器、列表推导式、生成器推导式、匿名函数和内置函数
Python进阶(四)----生成器.列表推导式.生成器推导式.匿名函数和内置函数 一丶生成器 本质: 就是迭代器 生成器产生的方式: 1.生成器函数
- python基础-迭代器和生成器
一.递归和迭代 1.递归:(问路示例) 递归算法是一种直接或者间接地调用自身算法的过程.在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解. 2.迭代:简单理 ...
- 简学Python第四章__装饰器、迭代器、列表生成式
Python第四章__装饰器.迭代器 欢迎加入Linux_Python学习群 群号:478616847 目录: 列表生成式 生成器 迭代器 单层装饰器(无参) 多层装饰器(有参) 冒泡算法 代码开发 ...
- Python入门之迭代器/生成器/yield的表达方式/面向过程编程
本章内容 迭代器 面向过程编程 一.什么是迭代 二.什么是迭代器 三.迭代器演示和举例 四.生成器yield基础 五.生成器yield的表达式形式 六.面向过程编程 ================= ...
- Python第四天 流程控制 if else条件判断 for循环 while循环
Python第四天 流程控制 if else条件判断 for循环 while循环 目录 Pycharm使用技巧(转载) Python第一天 安装 shell 文件 Python第二天 ...
- python 迭代器协议和生成器
一.什么是迭代器协议 1.迭代器协议是指:对象必须提供一个next方法,执行该方法要么返回迭代中的下一项,要么就引起一个stoplteration异常,以终止迭代(只能往后走,不能往前退) 2.可迭代 ...
随机推荐
- linux下添加用户到sudo组 并禁止sudo用户修改密码
linux下添加用户到sudo组 创建用户 useradd hanli 为新用户设置密码 passwd hanli 创建用户组 groupadd op 将用户添加到用户组 usermod - ...
- ab网站压力测试命令的参数、输出结果的中文注解
ab命令原理 Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx.lighthttp.IIS等其它Web服务器的压力. ab命令对发出负载的计算机要求很低,既不会占用很 ...
- BZ4326 运输计划
Time Limit: 30 Sec Memory Limit: 128 MB Submit: 2132 Solved: 1372 Description 公元 2044 年,人类进入了宇宙纪元.L ...
- lvm xfs 扩容
lvresize -L 300M /dev/vg1/lv1 #重新设定大小 e2fsck -f /dev/vg1/lv1 #检查磁盘错误 (针对ext4执行) resize2fs /dev/vg1/l ...
- kubernetes 认证授权
每个Kubernetes集群都有一个集群根证书颁发机构(CA). 集群中的组件通常使用CA来验证API server的证书,由API服务器验证kubelet客户端证书等.为了支持这一点,CA证书包被分 ...
- virtualbox+vagrant学习-2(command cli)-5-vagrant halt命令
Halt 格式: vagrant halt [options] [name|id] 该命令关闭vagrant管理的正在运行的机器. userdeMacBook-Pro:~ user$ vagrant ...
- Python:基础知识(二)
常用模块 urllib2 :用于发送网络请求,获取数据 (Pyhton2中的urllib2工具包,在Python3中分拆成了urllib.request和urllib.error两个包.) json: ...
- html手机网页自适应宽度
#在head之间加如下代码即可 <meta name="viewport" content="width=device-width, initial-scale=1 ...
- SERVICE问题解决方法
这篇文章主要介绍了Windows服务器下出现ZendOptimizer.MemoryBase@NETWORK SERVICE问题解决方法,需要的朋友可以参考下 日志提示 事件 ID ( 2 )的描述( ...
- PAT乙级1001
https://pintia.cn/problem-sets/994805260223102976/problems/994805325918486528 #include<bits/stdc+ ...