新手Python第四天(生成器)

2018-01-12 11:55:26来源:cnblogs.com作者:呆萌小朋友人点击

分享

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 += 1f=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 Iterablefrom collections import Iteratorprint(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和valuedef 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 functoolsprint(functools.reduce(lambda a,b:a+b,range(10)))#求和#super#memoryview#property#credits()#copyright()#delattr()

 Python json写文件(跨平台)

import jsondata={'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 jsonf_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 pickledata={'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 picklef_pickle=open('pickle.text','rb')#读取文件data_load_pickle=pickle.load(f_pickle)#data_load_pickle=pickle.loadsf_pickle.close()

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台