• 新手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)
    View Code

    Python 生成器的方法

    print(f.__next__())#调用下一个元素
    print(f.send(1))#发送一个元素
    View Code

    Python 生成器的循环

    for i in (i*2 for i in range(10)):
        print(i)
    View Code

    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('')
    View Code

     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))#判断是不是迭代器
    View Code

    Python 迭代器的方法

    print(iter([1,2,3]).__next__()) #调用下一个

    Python 迭代器循环

    for i in iter([1,2,3,4]):
        print(i)
    #while循环不建议使用,迭代器是无穷尽的无法计算最后一个值,只有用try去判断
    View Code

    Python 内置函数(判断)

    print(bool(1))#布尔值判断
    print(all([0,1,1]))#全部为真才为真
    print(any([0,1,1]))#有一个为真才为真
    print(callable([]))#是不是一个方法,是不是可以调用
    View Code

    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)
    View Code

    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)
    View Code

    Python 内置函数(查看)

    help()#帮助
    print()#打印
    print('{name}'.format(name='22'))#格式化输出
    type('a')#查看数据类型
    print(dir({}))#查看内置方法
    vars()#返回一个对象所有的属性名
    globals()#打印全局变量的key和value
    def func1():
        a=1
        print(locals())#打印全部的局部变量
    func1()
    View Code

    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)])#对一个类表切片 没啥用
    View Code

    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()
    View Code

     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()
    View Code

    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()
    View Code

    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()
    View Code

    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()
    View Code

    python学习途径

    友情推荐:  猿人学Python【https://www.yuanrenxue.com/】 由一群工作十余年的老程序员结合实际工作经验所写的Python教程。
  • 相关阅读:
    自定义博客园代码格式
    metaWeblog Test
    STM32 USB复合设备编写
    C数组下标越界
    使用powershell批量修改文本为utf8
    在QtCreator中使用doxygen
    29.内存的基础知识
    28.时钟初始化
    27.点亮led的操作
    26.核心初始化之关闭MMU和cache
  • 原文地址:https://www.cnblogs.com/gm332211/p/8268860.html
Copyright © 2020-2023  润新知