zoukankan      html  css  js  c++  java
  • 新手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教程。
  • 相关阅读:
    topcoder srm 681 div1
    topcoder srm 683 div1
    topcoder srm 684 div1
    topcoder srm 715 div1
    topcoder srm 685 div1
    topcoder srm 687 div1
    topcoder srm 688 div1
    topcoder srm 689 div1
    topcoder srm 686 div1
    topcoder srm 690 div1 -3
  • 原文地址:https://www.cnblogs.com/gm332211/p/8268860.html
Copyright © 2011-2022 走看看