• Day18&Day19 文件处理,迭代器生成器,三元表达式


    ###文件处理 

    f.open(‘chengli’,endcoding=‘utf-8’)

    data=f.read()

    print(data)

    f.close() 手动关

    文件没有修改一说,只有覆盖

    f.write()从光标处开始写

    with open(‘a.txt’,’w’) as data:

    with可以同时打开多个文件,用逗号隔开

    ###高级函数

    map

    reduce #from functools import reduce

    list=(‘123_sb’,34,’a’,’b’)

    filter(lambda x:x.endswith(“sb”),list) 

    f.flush() 刷新

    f.tell() 光标当前显示的位置

    #只有read(3)代表读取3个字符,其余的文件内光标移动都是以字节为单位,如seek,tell,readline,truncate

    newline=‘’读取文件中真正的换行符

    f.seek(0)用来控制光标的移动,0移动到首字节

    f.seek(10,1) #1表示基于相对位置seek,即上一次光标停止的位置,seek 10个字节文件必须以b模式打开

    f.seek(-10,2)#2表示逆序seek10个字节

    f.truncate()文件截断,文件必须以w方式打开

    data[-1]读取最后一行

    ###迭代器

    for,sum, min, max

    print(dir(x))

    x._iter_()变成可迭代对象,遵循迭代器协议,即可使用x._next_()

    ###生成器generator object

    自动实现了迭代器协议,生成器即为可迭代器,也可理解为一种数据类型

    生成器函数:

    yield语句得到返回值,即得到生成器

    def test()

          yield 1

          yield 2

          yield 3

    可yield多次

    yield可保留函数的运行状态,遇到yield的停留在执行完yield的位置

    可以在如:

    baozil=pro.g._next_()

    #加代码

    baozil= pro.g._next_()

    生成器表达式:

    三元表达式:例如: 

    ’if判断的返回值’ if name == ‘alex’ else ‘else的返回值’

    用for循环建列表:

    l = [i for i in range(10)] #一元

    l = [‘元素%s’ %i for i in range(10)] #二元

    l = [‘元素%s’ %i for i in range(10) if i>5] #三元

    三元表达式的缺点是只能生成列表,而且占内存,适合小数据

    laomuji = (‘鸡蛋%s’ %i for i in range(10))#生成器表达式

    print(laomuji._next_())  #或print(next(laomuji))

    生成器表达式比列表解析更节省内存

    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

    ###触发生成器运行的方法:

    t._next_()

    next(t)

    t.send(None )

    def test():

        print('开始了')

        first=yield 1

        print('第一次',first)

        yield 2

        print('第二次')

    t=test()

    res=t.__next__()

    print(res)

    t.send(None)#None是传值给yield,yield赋值给first,且函数停留在first的位置

    ###并发

  • 相关阅读:
    十五周学习笔记
    十四周学习笔记
    程序员修炼之道二
    程序员修炼之道
    构建之法十七
    十三周学习笔记总结
    个人课程总结
    构建之法十六
    构建之法十二
    文章单词统计接龙
  • 原文地址:https://www.cnblogs.com/xuwinwin/p/11297149.html
Copyright © 2020-2023  润新知