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='22'))#格式化输出 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':'000000'} 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':'000000'} 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【https://www.yuanrenxue.com/】 由一群工作十余年的老程序员结合实际工作经验所写的Python教程。